显示最近输入的字符和汇编中的变量?

时间:2016-10-17 16:36:20

标签: assembly

您好我想知道如何显示一个带有变量'char'的角色,就像这样

.model small
.stack 100h
.data
msg1 db 'Hay go 1 phim: $'
msg2 db 13,10,'Ky tu nhan duoc la: $'
char db '$'
.code
main proc 
    mov ax,@data
    mov ds,ax 

    mov ah,09h
    lea dx,msg1
    int 21h

    mov ah,01h    
    int 21h
    mov char,al    

    mov ah,09h
    lea dx,msg2
    int 21h

    mov ah,02h
    mov dl,char
    int 21h

    mov ah,01h
    int 21h
    mov ah,4ch
    int 21h
endp
end main

1 个答案:

答案 0 :(得分:3)

您必须在读取char之后存储al,因为dl用于msg2地址的低8b,al中的值由{{修改1}}输出。如此简单的msg2单独无效。

有不同的方法,如何为x86 CPU保留一些值。您的mov dl,al只是一个选项(可读且易于理解,因此非常适合大多数情况)。

其他选项是将其保存在某个寄存器中,读取和写入之间的代码不会对其进行修改。从快速查看看起来只有mov [char],alax之间的修改,因此您可以将该char存储到dx中。

示例:

cl

其他选项是暂时将值存储到堆栈中:

...
mov ah,01h    
int 21h
mov cl,al

... output msg2

mov ah,02h
mov dl,cl
int 21h