我正在尝试使用Irvine32库以汇编语言输入用户的两个数字,但不知道如何。这就是我到目前为止所做的:
INCLUDE Irvine32.inc
.data
number1 WORD
number2 WORD
.code
main PROC
exit
main ENDP
END main
答案 0 :(得分:2)
我不熟悉irvine,但是如何自己编写输入和解码程序呢?
DOS int 21 / a从标准输入读取一行,并将其放入缓冲区
从ascii到寄存器的解码是一个但更棘手;你必须走几个数字,然后通过改变当前值来逐个添加它们
这是一种方法,只是为了有一个想法: (对不起语法,max与masm不兼容,我仍然使用Eric Isaacson的A86汇编程序)
.org 0100
JMP start
buffer: db 10," " ; space for 10 digits
; read input to buffer
input: mov ah, 0ah ; input value
mov dx, buffer
int 21h
ret
; decode buffer to CX
decode: mov dx,0
mov si, buffer+2
mov cl, [buffer+1] ; while (numChars>0)
decLoop: cmp cl,0
je decEnd
mov ax, dx ; mul DX by 10
shl ax, 2
add ax, dx
shl ax, 1
mov dx, ax
mov al,[si] ; get current digit
inc si ; and point to next one
sub al,'0'
mov ah, 0
add dx, ax ; add the digit read
dec cl ; numChars--
jmp decLoop
decEnd: ret
; main()
start: call input
call decode
push dx
call input
call decode
pop cx
; CX now holds first, DX second number
; feel free to do with em what you feel like
int 20h ; quit