使用汇编语言中的整数提示

时间:2010-02-05 23:22:29

标签: assembly

promptl BYTE "Enter a signed integer: ",0
prompt2 BYTE "The sum of the integers is: ",0

它会使用汇编语言提示用户输入两个整数吗?如何使用汇编语言添加两个整数?

2 个答案:

答案 0 :(得分:2)

我的6502有点生锈(不,不是芯片本身,我的技能)*,但这样的东西? [你没有说你正在使用哪种汇编语言:-)]

LDX #prompt1
LDA #prompt2
CLC
ADC
BCS &overflow
RTS
.overflow
' handle the overflow here..
  • 这个笑话是(c)mjv,2010

答案 1 :(得分:2)

BYTE指令本身不是汇编指令,它只是一种要求汇编器保留并可选地初始化字节或字节数组的存储单元的方法。此外,此内存位置与标签(变量名称)相关联,以供将来在程序中引用。

因此...

  promptl BYTE "Enter a signed integer: ",0

只会定义prompt1变量以包含此字符串,并由包含0的(额外)字节终止。它不会在任何地方输出任何提示。

如果您希望显示此消息,通常需要调用系统的原始函数来执行此操作。在MS-DOS世界中,许多这些基本服务是通过调用着名的INT $21(中断#21)来呈现的,之前已经使用指示所需“服务”的数字代码加载A寄存器(以及附加的寄存器等取决于所需的特定“服务”。

因此,在MS-DOS世界中,程序的开头可能如下所示。然后,您需要将输入值转换为整数,将其存储到工作变量,重新提示用户,获取另一个值,转换它,最后添加这两个值。当然,你可能会引入子程序,这样你就可以处理重复的任务而不需要太多的代码重复。

prompt1 byte "Enter a signed integer: "   ; btw in most assemblers the explicit added null char is not needed.
inputStr db 50,?      ; defines a variable where to store the user's response (up to 50 bytes)

; prompt the user
        mov dx, offset prompt1
        mov ah, 9
        int 21h
; input a string: 
        mov dx, offset inputStr
        mov ah, 0ah
        int 21h

;etc...