如何在装配时随机显示单个字符?

时间:2014-10-27 15:34:04

标签: assembly random

我正在编写一个汇编代码,它应该随机显示一个字符。在这段代码中,我使用函数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

0 个答案:

没有答案