您好我想知道如何显示一个带有变量'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
答案 0 :(得分:3)
您必须在读取char之后存储al
,因为dl
用于msg2
地址的低8b,al
中的值由{{修改1}}输出。如此简单的msg2
单独无效。
有不同的方法,如何为x86 CPU保留一些值。您的mov dl,al
只是一个选项(可读且易于理解,因此非常适合大多数情况)。
其他选项是将其保存在某个寄存器中,读取和写入之间的代码不会对其进行修改。从快速查看看起来只有mov [char],al
和ax
之间的修改,因此您可以将该char存储到dx
中。
示例:
cl
其他选项是暂时将值存储到堆栈中:
...
mov ah,01h
int 21h
mov cl,al
... output msg2
mov ah,02h
mov dl,cl
int 21h