我正在编写一个汇编代码,它应该随机显示一个字符。在这段代码中,我使用函数generateRandom来获取随机值(使用CX:DX),我将其复制到行和列。如您所见,我对行和列使用相同的函数。但是,不显示任何字符。我尝试更改值和变量,发现只要将变量分配给dh,就不会显示该字符。分配给dl时,变量行和列工作正常。只有在将数值直接指定给dh时才会显示该字符。似乎问题在于dh寄存器,但我不确定它究竟出了什么问题。
.model small
.data
row db 3
column db 3
random db '@'
;delaytime db 18
.stack 100h
.code
display proc
mov dh, row
mov dl, column
xor bh, bh
mov ah, 02h
int 10h
mov al, random
xor bh, bh
mov cx, 1
mov ah, 0Ah
int 10h
mov dh, 0
ret
display endp
generateRandom proc
mov ah, 00h
int 1Ah
mov ax, dx
xor dx, dx
mov cx, 10
div cx
add dl, 48
ret
generateRandom endp
main proc
mov ax, @data
mov ds, ax
;start
;video mode
mov al, 03h
mov ah, 00h
int 10h
call generateRandom
mov row, dl
call generateRandom
mov column, dl
call display
;end
mov ax, 4c00h
int 21h
main endp
end main