在汇编程序中读取两个多位数字的输入
Read two inputs with multi digits in assembler
我正在使用 TASM 为大学学习汇编,我是一个完全的初学者。
我有一个评估,我需要获得两个输入(例如:12、20)并决定哪个更大。目前我设法读取一个多位数字输入并将其存储到 BL
但我不知道如何读取另一个。
如何输出哪个输入更大?
提前致谢!
我的代码:
.model small
.stack 100h
.data
num db 0
.code
start:
mov ax, @data
mov ds, ax
mov dl, 10
mov bl, 0
scanNum:
mov ah, 01h
int 21h
cmp al, 13 ; Check if user pressed ENTER KEY
je exit
mov ah, 0
sub al, 48 ; ASCII to DECIMAL
mov cl, al
mov al, bl ; Store the previous value in AL
mul dl ; multiply the previous value with 10
add al, cl ; previous value + new value ( after previous value is multiplyed with 10 )
mov bl, al
jmp scanNum
exit:
mov ah, 04ch
int 21h
end start
通过将 ret
放在末尾,使 scanNum 成为一个函数。然后你可以执行它两次。在第一次调用 scanNum 后,将 return 值保存在 scanNum 函数未使用的地方。
读完这两个数字后,使用 cmp
比较它们。
像这样:
call scanNum
mov bh, bl
call scanNum
<compare bl and bh to choose which one to print>
exit:
mov ah, 04ch
int 21h
scanNum:
mov dl, 10
mov bl, 0
scanNumLoop:
<same as before, except jmp to scanNumExit when done>
jmp scanNumLoop
scanNumExit:
ret
我正在使用 TASM 为大学学习汇编,我是一个完全的初学者。
我有一个评估,我需要获得两个输入(例如:12、20)并决定哪个更大。目前我设法读取一个多位数字输入并将其存储到 BL
但我不知道如何读取另一个。
如何输出哪个输入更大?
提前致谢!
我的代码:
.model small
.stack 100h
.data
num db 0
.code
start:
mov ax, @data
mov ds, ax
mov dl, 10
mov bl, 0
scanNum:
mov ah, 01h
int 21h
cmp al, 13 ; Check if user pressed ENTER KEY
je exit
mov ah, 0
sub al, 48 ; ASCII to DECIMAL
mov cl, al
mov al, bl ; Store the previous value in AL
mul dl ; multiply the previous value with 10
add al, cl ; previous value + new value ( after previous value is multiplyed with 10 )
mov bl, al
jmp scanNum
exit:
mov ah, 04ch
int 21h
end start
通过将 ret
放在末尾,使 scanNum 成为一个函数。然后你可以执行它两次。在第一次调用 scanNum 后,将 return 值保存在 scanNum 函数未使用的地方。
读完这两个数字后,使用 cmp
比较它们。
像这样:
call scanNum
mov bh, bl
call scanNum
<compare bl and bh to choose which one to print>
exit:
mov ah, 04ch
int 21h
scanNum:
mov dl, 10
mov bl, 0
scanNumLoop:
<same as before, except jmp to scanNumExit when done>
jmp scanNumLoop
scanNumExit:
ret