【问题标题】:Read two inputs with multi digits in assembler在汇编程序中读取两个具有多位数字的输入
【发布时间】:2018-01-13 21:14:58
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: assembly x86-16 tasm


    【解决方案1】:

    把scanNum变成一个函数,把ret放在最后。然后你可以执行两次。第一次调用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多