Assembly 在汇编程序中读取两个多位输入
我正在学习使用TASM进行组装,我是一名完全的初学者 我有一个评估,我需要得到两个输入(例如:12,20),并决定哪一个更大。目前,我设法读取一个多位数输入,并将其存储到Assembly 在汇编程序中读取两个多位输入,assembly,x86-16,tasm,Assembly,X86 16,Tasm,我正在学习使用TASM进行组装,我是一名完全的初学者 我有一个评估,我需要得到两个输入(例如:12,20),并决定哪一个更大。目前,我设法读取一个多位数输入,并将其存储到BL中,但我不知道如何读取另一个 如何输出哪个输入更大 提前谢谢 我的代码: .model small .stack 100h .data num db 0 .code start: mov ax, @data mov ds, ax mov dl, 10
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后,将返回值保存在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
调用scanNum
莫夫bh,bl
调用scanNum
出口:
mov啊,04ch
int 21h
scanNum:
mov dl,10
mov bl,0
scanNumLoop:
jmp scanNumLoop
scanNumExit:
ret