在汇编中读取2个数字并将其存储在变量中

时间:2011-10-16 17:29:29

标签: variables assembly

只是把它放在那里 - 我确实进行了搜索并尝试找到一个易于理解的教程,但却无法:/ ..我仍然有点新鲜。

但我正在努力的是从用户输入2个数字并将其存储在变量中。然后将其与最大值进行比较。

output db 10,13, "Enter a number: $"
asq dw 10,13, "$" ; ascii values for a new line
stilltoimplement db 10,13, "Do calculations $"

.code 

jmp start 

    number db ?
    max db 14

start:
    mov ax,@data 
    mov ds,ax

    mov ah,09 ;prints new line
    mov dx, offset output
    int 21h

    mov ah, 01 ;checks for key
    mov al, 01
    int 21h
    mov number, al


    cmp number,14
    jg start
    jl part2

part2:

    mov ah,09
    mov dx,offset stilltoimplement
    int 21h

ending:
    mov ah,4ch
    mov al,00
    int 21h ;End the program

END

1 个答案:

答案 0 :(得分:0)

如果要添加多位数字,可以存储数字  通过将当前数字乘以10来在寄存器中  输入

我猜你是在x86上,所以你有6个通用目的  寄存器。

在类似汇编程序的伪代码中:

 register a = 0 
 register b = 0 
 register c = 0 

 num1:

 c = getDigit() 
 if c is a delimiter/sentinel value jump to num2
 a = a * 10 
 a = a + c 
 jump to num1

 num2: 

 c = getDigit() 
 if c is a delimiter/sentinel value jump to sum
 b = b * 10 
 b = b + c 
 jump to num2

 sum:
 a = a + b

你的总和现在在