我正试图在8086中读取键盘输入。 程序将接受两个输入(-127和127之间的整数)和一个操作数('*'或'+')。之后我将解决给定的表达式,并在其他提示下面打印出来
例如:
输入一个数字:5 输入另一个号码:4 操作:*
5 * 4 = 20
截至目前,我已经为每个输入创建了一个提示,并且可以正确读取它们,问题是,我该如何处理输入?如何将其用于操作以下是我的代码。提前谢谢。
;------------------------------------------------
stacksg segment para stack'Stack' ;define the stacks
db 32 dup(0)
stacksg ends
;------------------------------------------------
datasg segment para'Data' ;data segment
paralist label byte
maxlen: db 5 ;The maximum length of the string will be 20
actlen: db ? ;Which character we have inputed now
buffer: db 5("$") ;The buffer where the string is buffered
prompt1 db "Enter the first number:$"
prompt2 db "Enter the second number:$"
prompt3 db "Enter the operation:$"
datasg ends
;-------------------------------------------------
codesg segment para'Code' ;code segment
main proc far ;main procedure
assume ss:stacksg, ds:datasg, cs:codesg ;define segment register
mov ax,datasg ;initialize data segment register
mov ds,ax
mov es,ax
mov ah, 06h ;scroll screen
mov al, 0 ;num of rows
mov cx, 0 ;start row
mov dh, 24 ;end row
mov dl, 79 ;end col
mov bh, 30h ;color
int 10h ;screen interrupt
mov ah, 02h
mov bh, 00h
mov dh, 10
mov dl, 20
int 10h
;The First Number
mov ah,09h
lea dx,prompt1
int 21h ;First Input
mov ah,0ah
lea dx,paralist
int 21h
mov ax,4c00h ;end processing
int 21h
main endp ;end of procedure
codesg ends ;end of code segment
end main ;end of program
答案 0 :(得分:1)
从您获得的值中获取数字减去48的数值(或减去与ASCII字符“0”对应的值)。将此应用于您的每个数字,您就可以开始了。请参阅ASCII table以供参考。
答案 1 :(得分:-1)
将运算符与'+'进行比较。如果相等,请添加两个值。如果不相等,则将两个值相乘。打印结果。
让我填补一些空白。您需要一个循环将字符转换为数字
如果第一个字符是' - ',请将值设置为-1,否则将其设置为1.
a)从每个字符中减去“0”并将结果乘以。
如果有更多字符,则将结果乘以10并转到a)。