|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 顺qi吇繎 于 2012-3-10 14:03 编辑
问题一:
代码1:
do7c:
subst: cmp ah,3
ja subend
cmp ah,0
je sub1
cmp ah,1
je sub2
cmp ah,2
je sub3
cmp ah,3
je sub4
subend: iret
代码2:
do7c: jmp subst
table dw sub1,sub2,sub3,sub4
subst: push bx
cmp ah,3
ja subend
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
subend: pop bx
iret
为什么我在测试中,代码1可以正确的跳到子程序,而代码2总是跳不到指定的子程序呢?
代码2是直接定址表法,需要在纯dos下才行吗?
问题二:
;在第四个子程序里
sub4:
push cx
push si
push di
push es
push ds
mov si,0b800h
mov es,si
mov ds,si
mov si,160
mov di,0
cld
mov cx,24 ;复制24次
sat: push cx
mov cx,160
rep movsb ;复制
pop cx
loop sat
mov cx,80
mov si,0
s22:
mov byte ptr es:[160*24+si],' '
add si,2
loop s22
pop ds
pop es
pop di
pop si
pop cx
ret
请问下,下边的代码,
cld
mov cx,24 ;复制24次
sat: push cx
mov cx,160
rep movsb ;复制
pop cx
loop sat
用得哪个寄存器调整的复制的n+1到n行的,si与di的值总是不变的
我怎么觉得代码的意思是 把第2行中的字符复制的第1行 重复24次这个操作而没有n+1到n的效果呢?
|
|