试验5怎么解决
王爽教材,试验5中第5个小题,怎么写,想了半天,还是没有头绪。求助。。 assume cs:codea 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结束循环,虽然循环结束了,但是并没有执行后面循环要执行的步骤。不明白这是为什么。 忘记说了第三个问题。书中试验5,是a,b,c但是我在编译器编译的时候c好像是特殊字符,就用cc代替了。但是看到有其他同学的代码中却是用的c,为什么在我这里就不可以呢?我用的编译器是Notepad++ s: mov al,ds: ;将a中的数据放入cc中,循环8?
add al, es: ; 多这条, 为什么要2次循环呢
mov ss:,al
inc bx
loop s
页:
[1]