cyht33 发表于 2011-10-7 18:22:27

试验5怎么解决

王爽教材,试验5中第5个小题,怎么写,想了半天,还是没有头绪。求助。。

cyht33 发表于 2011-10-7 20:53:27

assume cs:code

a segment
db 1, 2, 3, 4, 5, 6, 7
a ends

b segment
db 1, 2, 3, 4, 5, 6, 7
b ends

cc segment
db 0, 0, 0, 0, 0, 0, 0
cc ends

code segment

start:mov ax,a
                mov ds,ax                ;将a定义成数据段
               
                mov ax,b
                mov es,ax                                ;将b定义成代码段
               
                mov ax,cc
                mov ss,ax                                ;将cc定义成栈段
               
                mov bx,0                                ;将bx置0,作为偏移地址
                mov cx,7                               
               
        s:        mov al,ds:                        ;将a中的数据放入cc中,循环8?
                mov ss:,al
                inc bx
                loop s
               
                mov bx,0
                mov cx,7
               
        s0:        mov al,ss:                        ;将cc中的数据与b中的数据累加放入cc中,循环8?
                add al,es:
                mov ss:,al
                inc bx
                loop s0
               
                mov ax,3c00h
          int 21h
code ends

end start

这是我编译出来的。经过测试可以实现试验5中的效果。但是有几个不明白的地方请各位讲解一下:
1、在2次循环中,都事先将bx,cx置为0,因为循环2次,所以设置了2次,有没有什么办法可以将bx,cx置0,只设置1次,而可以供2次循环使用。
2、在使用debug调试的时候使用P结束循环,虽然循环结束了,但是并没有执行后面循环要执行的步骤。不明白这是为什么。

cyht33 发表于 2011-10-7 20:56:14

忘记说了第三个问题。书中试验5,是a,b,c但是我在编译器编译的时候c好像是特殊字符,就用cc代替了。但是看到有其他同学的代码中却是用的c,为什么在我这里就不可以呢?我用的编译器是Notepad++

longyanjy 发表于 2011-10-9 00:49:05

   s:      mov al,ds:                        ;将a中的数据放入cc中,循环8?
             add al, es:            ; 多这条, 为什么要2次循环呢         
             mov ss:,al
             inc bx
             loop s
页: [1]
查看完整版本: 试验5怎么解决