ani*_*ila -1 assembly dos masm dosbox x86-16
我正在使用 MASM 编译器和 DOSBOX。我想将变量的值保存到寄存器中。我想将num1值保存到cx寄存器中。我怎样才能做到这一点?
.MODEL SMALL
.STACK 50H
.DATA
num1 db '5'
NL DB 0DH, 0AH, '$'
msg db ?,0AH,0DH,"Enter an odd number between 0 to 10:$"
nxtline db 0Ah,0DH,"$"
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
LEA DX,msg
mov ah,9
int 21H
LEA DX,nxtline
mov ah,9
int 21H
MOV AH,1
INT 21H
LEA DX,nxtline
mov ah,9
int 21H
mov bl,al ;save the value from input
mov num1,bl
LEA DX,num1
mov ah,9
int 21H
mov cl,al
main endp
end main
Run Code Online (Sandbox Code Playgroud)
您将丢失用户在 中输入的值AL。您可以这样输入一个字符:
MOV AH,1
INT 21H
Run Code Online (Sandbox Code Playgroud)
该字符存储在 中AL,但在保存该值之前,BL您会显示一个换行符:
LEA DX,nxtline
mov ah,9
int 21H
Run Code Online (Sandbox Code Playgroud)
并且 in 的值AL消失了,因为该中断用于AL显示字符串。解决方案是在显示换行符BL 之前保存该值:
MOV AH,1
INT 21H
mov bl,al ;save the value from input
LEA DX,nxtline
mov ah,9
int 21H
Run Code Online (Sandbox Code Playgroud)
编辑:将值移至CX:
xor cx,cx ;CLEAR CX.
mov cl,bl ;MOVE CHAR INTO CL.
sub cl, 48 ;CONVERT CHAR TO DIGIT, EXAMPLE: '5' -> 5.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12442 次 |
| 最近记录: |