在汇编程序中读取两位多位输入

时间:2018-01-13 21:14:59

标签: 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  
        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

1 个答案:

答案 0 :(得分:3)

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