| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1467 人关注过本帖
标题:求教一下十个字(十六位二进制数)之和的程序和两个多字节的二进制之和的区 ...
只看楼主 加入收藏
qq384200403
Rank: 2
等 级:论坛游民
帖 子:35
专家分:39
注 册:2013-3-1
结帖率:87.5%
收藏
 问题点数:0 回复次数:0 
求教一下十个字(十六位二进制数)之和的程序和两个多字节的二进制之和的区别
这两个程序差不多,可我感觉十个字的和不应该这样写啊。求讲解啊
这是10个字(16位二进制数)之和的程序 
  ORG 100h   
 
LEA SI,ADD1; 
 LEA DI,ADD2;
 LEA BX,SUM;
    MOV CL,CONT;
      MOV CH,0;循环初始化   
 CLC;   进位清零 
 MADD1: MOV AX,[SI];  读加数1   
 ADC AX,[DI]   
 ADD SI,2;   移动源区地址指针 
   ADD DI,2;   移动目的区地址指针   
 MOV [BX],AX; 回存计算结果 
   ADD BX,2;  移动―和‖存储区地址指针    
LOOP MADD1; 循环控制  
 
 
HLT; 
   
暂停 
 
ADD1 DB  0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1 ADD2 DB  56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H; 加数2 SUM DB  10  DUP (0);  和存储单元 CONT 
 DB 5 ;  循环次数 



这是两个数的加法程序
DATA       SEGMENT
ADD1   DB  FEH,86H,7CH,44H,56H,1FH
ADD2   DB  56H,49H,4EH,0FH,9CH,22H

SUM             DB          6DUP(0)
CONT           DB          3
DATA          ENDS
STACK        SEGMENT      PARA  STACK  ′STACK′
                     DB                   100DUP(?)
STACK        ENDS
CODE          SEGMENT
ASSUME:CS:CODE,DS:DATA,ES:DATA,SS:STACK

MADDB:  MOV       AX,DATA
  MOV       DS,AX     ;初始化数据段寄存器
  MOV       ES,AX      ;初始化附加段寄存器
  MOV  SI,OFFSET  ADD1    ;被加数地址→SI
  MOV  DI,OFFSET  ADD2    ;加数地址→DI
  MOV  BX,OFFSET  SUM     ;和地址→BX
  MOV  CL,BYTE  PTR  CONT
  MOV  CH,0       ;初始化相加字长度
  CLC        ;清进位

MADDB1:MOV        AX,[SI]
      ADC         AX,[DI]    ;16位相加
      INC           SI
      INC           SI
      INC           DI
      INC           DI
      MOV        [BX],AX    ;相加结果送结果单元
      INC           BX
      INC           BX
      LOOP         MADDB1     ;执行循环
      HLT
CODE         ENDS
                    END          MADDB
搜索更多相关主题的帖子: 二进制 
2013-11-04 18:25
快速回复:求教一下十个字(十六位二进制数)之和的程序和两个多字节的二进制之和 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016852 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved