汇编语言第六章习题优秀代码赏析

程序如下,编写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
发布了17 篇原创文章 · 获赞 7 · 访问量 2994

猜你喜欢

转载自blog.csdn.net/znevegiveup1/article/details/85219148