【发布时间】:2017-06-03 11:26:23
【问题描述】:
所以我必须做一个基本的计算器(我明天要考试)但我卡住了。 我得到第一个 num 到数组,动作(+ OR - ),然后第二个数字也到数组(数字必须是 1-4 位)。 我如何从数组中取出每个数字并将其转换为完整数字(转换为二进制),执行数学运算并将答案转换为十六进制并打印出来? 它必须使用单独的函数来完成,并且只有当用户键入 0 时出现输入第一个 num 的消息时,程序才会结束。 这是我的代码,希望您理解我的问题和代码(在互联网上找不到与我正在寻找的类似的东西)。 谢谢:)
data segment
entr_first db 'Please enter first num 1-4 digits:',0ah,0dh,'$'
select_op db 'Please enter operation type + or -:',0ah,0dh,'$'
entr_sec db 'Please enter second num 1-4 digits:',0ah,0dh,'$'
ans db 'Your answer is: $'
num1 db 7 dup('5')
num2 db 7 dup('5')
answer db 8 dup('6')
opr db 1 dup('0')
data ends
sseg segment stack
sseg ends
code segment
assume cs:code,ds:data,ss:sseg
main: mov ax,data
mov ds,ax
call kelet1
call revah
call keletOpr
call revah
call kelet2
call dollar
int 21h
mov ax,4c00h
int 21h
dollar:
mov cx,0
mov si,0
mov cl,num1[si+1]
add si,cx
add si,2
mov num1[si],'$'
mov cx,0
mov si,0
mov cl,num1[si+1]
add si,cx
add si,2
mov num2[si],'$'
ret
revah: mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
ret
kelet1: mov dx,offset entr_first
mov ah,9
int 21h
mov dx,offset num1
mov ah,10
int 21h
ret
keletOpr:mov dx,offset select_op
mov ah,9
int 21h
mov ah,1
int 21h
mov opr[0],al
ret
kelet2: mov dx,offset entr_sec
mov ah,9
int 21h
mov dx,offset num2
mov ah,10
int 21h
ret
code ends
end main
【问题讨论】:
-
即使 SO 也充满了用于将字符串转换为数字的样本...还要更具体地说明是什么导致了你的问题,你需要一个算法还是你坚持实现它?如果有,具体在哪里? PS:评论您的代码,特别是如果您希望其他人提供帮助。如果这是一项学校作业,请重新查看您的学习材料并咨询您的老师。
标签: assembly binary hex calculator x86-16