当前位置: 代码迷 >> 汇编语言 >> 初级有关问题:关于王爽《汇编语言》的一个习题
  详细解决方案

初级有关问题:关于王爽《汇编语言》的一个习题

热度:2514   发布时间:2013-02-26 00:00:00.0
初级问题:关于王爽《汇编语言》的一个习题
刚自学王爽的《汇编语言》,完全不懂,高手请勿见笑。在书的实验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
  相关解决方案