代码:
DATA SEGMENT
;定义字节类型数据ADD1,ADD2,SUM和CONT(存放两个加数的长度)
ADD1 DB 11H,11H,11H,11H,11H,11H
ADD2 DB 66H,55H,44H,33H,22H,11H
SUM DB 6 DUP(0)
CONT DB 3
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
DB 100 DUP(?);定义100个未经初始化的字节
STACK ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA,ES:DATA,SS:STACK
MADDB:
MOV AX,DATA
MOV DS,AX;初始化数据段寄存器
MOV ES,AX;初始化附加段寄存器
MOV SI,OFFSET ADD1;将ADD1的偏移地址存入SI中
MOV DI,OFFSET ADD2;将ADD2的偏移地址存入DI中
MOV BX,OFFSET SUM;将SUM的偏移地址存入BX中
MOV CL,BYTE PTR CONT;CL在当前时刻强制设置为字节类型之后,赋值为CONT
MOV CH,0;初始化相加字长度
CLCMADDB1:MOV AX,[SI]
ADC AX,[DI];16位相加
INC SI;SI+1
INC SI
INC DI
INC DI
MOV [BX],AX;相加结果送至结果单元
INC BX
INC BX
LOOP CLCMADDB1;循环执行
HLT;处理器“暂停”指令
CODES ENDS
END MADDB
如何查验实验结果:
1.在调试模式下输入t,
程序执行一条指令
2.因为SUM的偏移地址存放在BX中,而程序后面BX的地址发生变化,所以要记下BX的第一次变化的值
3.输入d 000c 即可出现结果
(000c是此程序在运行时BX的第一个值)