刚自学王爽的《汇编语言》,完全不懂,高手请勿见笑。在书的实验5 第5 题,题目如下:
编写 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:mov ax,a
mov es,ax
mov ax,c
mov ds,ax
mov bx,0
mov cx,8
s1:mov ax,es:[bx]
add [bx],ax
add bx,2 //开始定义的数据是db ,为什么要add bx,2 而不是inc bx??
loop s1
mov ax,b
mov es,ax
mov ds,ax
mov bx,0
mov cx,8
s2:mov ax,es:[bx]
add [bx],ax
add bx,2
loop s2
mov ax,4c00h
int 21h
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
mov ax, c
mov es, ax
mov dx, 0
mov bx, 0
mov cx, 8
s:
mov dl, [bx]
mov ax, b
mov ds, ax
add dl, [bx]
mov es:[bx], dl;
inc bx;
loop s
mov ax, 4c00h
int 21h
code ends
end start