下列程序哪里出错了,怎么不能正常运行
assume cs : code , ds : data
data segment
db 9 , 8 , 7 , 4 , 2,0
db '///:: '
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax , data
mov ds , ax
mov ax , stack
mov ss , ax
mov sp , 10F
mov si , 0
mov di , 6
mov ax , 0B800h
mov es , ax
mov cx , 6
l:mov al , [si]
call trans
mov es:[bx] , ah
mov es:[bx+2] , al
mov al ,ds:[di]
mov es:[bx+4] , al
inc si
inc di
add bx , 6
loop l
;jmp short start //当把注释去掉之后就会出错,怎么回事呢
mov ax , 4c00h
int 21h
trans:
push cx
out 70h , al
in al , 71h
mov ah , al
mov cl , 4
shr ah , cl
and al , 00001111b
add ah , 30h
add al , 30h
pop cx
ret
code ends
end start
汇编语言 编程错误
[解决办法]
没有给 bx 置初值吧,如给 si 置 0 般地也给 bx 置 0 应该就可以了。
jmp start 其实也没必要,只要 jmp 到给 si 置 0 处就可以了。
一直循环的话,最后有个退出机制,比如检测按个什么键就结束。