我debug这个程序时在画星号处即int21h处程序不能继续运行为什么啊?
data segment
new1 db 'newsa ',13,10, '$ '
new2 db 'newsb ',13,10, '$ '
new3 db 'newsc ',13,10, '$ '
new4 db 'newsd ',13,10, '$ '
new5 db 'newse ',13,10, '$ '
new6 db 'newsf ',13,10, '$ '
new7 db 'newsg ',13,10, '$ '
new8 db 'newsh ',13,10, '$ '
new9 db 'newsi ',13,10, '$ '
new10 db 'newsj ',13,10, '$ '
news dw new1,new2,new3,new4,new5,new6,new7,new8,new9,new10
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,10
mov bx,news
display:
mov ah,9
lea dx,new1
****** int 21h**********
jmp judge
judge:
add [bx],2
dec cx
cmp cx,0
jnz display
jz exit
exit:
int 21h
mov ah,4ch
code ends
end start
------解决方案--------------------------------------------------------
你这个逻辑有问题
display:
mov ax,0
mov bx,ax
mov ah,9
lea dx,news[bx]
这里bx永等于零,
稍微改一下,但是只能输出第一个,因为你这个逻辑我也不太明白。
mov ax,0
mov bx,ax
mov ah,9h
mov dx,news[bx]
------解决方案--------------------------------------------------------
....
mov cx,10
mov bx, offset news ;* bx 应该是执行 news 地址数组的指针
display:
mov ah,9
mov dx, [bx] ;* 获取当前待显示的字符串地址 lea dx,new1
int 21h ; ******int 21h**********
jmp judge
judge:
add bx,2 ;* 指向下一个字符串地址
dec cx
cmp cx,0
jnz display
jz exit
exit:
mov ah,4ch ;* 这两个指令顺序不能反了
int 21h ;*
....