程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果存到c段中。
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
?
code ends
end start
答案:
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,a
mov ds,ax
;注意ds里面应该放入的是第一个段a相应的地址
mov cx,4
mov bx,0
s:
mov dx, [bx];利用了汇编偏移量的特点
;同时利用了没有进位的特点,把0102与0102看成一个数字
;放到一个寄存器之中进行相加
add dx, [bx+16];
mov [bx+32],dx
add bx,2
;每次两个字节相加,所以每次的偏移量加2
loop s
mov ax,4c00h
int 21h
code ends
end start