Assembly 带函数和数组的汇编计算器(子和加法)

Assembly 带函数和数组的汇编计算器(子和加法),assembly,binary,hex,calculator,x86-16,Assembly,Binary,Hex,Calculator,X86 16,所以我必须做一个基本的计算器(我明天要考试),但我卡住了。 我得到数组的第一个num,action(+或-),然后是第二个数字,也是数组(数字必须是1-4位)。 如何从数组中提取每个数字并将其转换为整数(转换为二进制),执行数学操作并将答案转换为十六进制并打印? 它必须使用单独的函数完成,并且只有当用户键入0时,当要输入第一个num的消息出现时,程序才会结束。 这是我的代码,希望你理解我的问题和代码(在互联网上找不到类似的东西)。 谢谢:) 这是错误的,int 21h的服务ah=0Ah需要不同的

所以我必须做一个基本的计算器(我明天要考试),但我卡住了。 我得到数组的第一个num,action(+或-),然后是第二个数字,也是数组(数字必须是1-4位)。 如何从数组中提取每个数字并将其转换为整数(转换为二进制),执行数学操作并将答案转换为十六进制并打印? 它必须使用单独的函数完成,并且只有当用户键入0时,当要输入第一个num的消息出现时,程序才会结束。 这是我的代码,希望你理解我的问题和代码(在互联网上找不到类似的东西)。 谢谢:)

这是错误的,
int 21h
的服务
ah=0Ah
需要不同的数据结构,请参阅

当然,第二个字符串的输入也是错误的

然后在
调用kelet2
之后,代码就不再有意义了

(除了
int21h,ah=4Ch
exit call)

我不认为从这个起点开始,你能在一天内学会足够多的组装来通过任何组装考试。所以让我们希望这次考试不是关于组装的

我认为经过2-3周(每天8-12小时)的强化学习+编程后,你可以达到“新手”水平,这可能足以通过考试

那么你到底在问什么?这个网站既不是“为我编写代码”服务,也不是“免费的组装讲座”(尽管在有限的意义上,我倾向于在这里这样做)。然而,我不能在一个答案中提供半年的缺失努力


也许你应该把考试推迟到夏天,然后每个周末花4-6小时学习组装知识。

即使如此,也有很多将字符串转换为数字的示例。。。更具体地说,是什么导致了你的问题,你需要一个算法,还是你一直在实现它?如果是,具体在哪里?备注:注释你的代码,特别是如果你希望别人帮助的话。如果这是一项学校作业,请重新阅读您的学习材料并咨询您的老师。我现在正在学习汇编一年,我在代码中编写的所有内容都是我们所学到的,并被告知要编写的内容so@ValerNaamaKuznetsov:那么,该说什么呢。。。1) 我看不出有什么办法可以“纠正”你今年“明天”的考试=>出了问题。。要么是你的选择者,要么是你的努力,要么是你的学习方式,要么是这些的组合。3) 如果您的评论是“但是我想要”,并且您将努力工作几个星期,那么我可能会尝试通过给您讲一点来帮助您,但这非常耗时,因此首先确保您的奉献精神是由它决定的,并且您确实想知道如何在汇编中编程。如果我按照我的正常费率来计算我的时间(我不这样做),那么这门课的费用将相当于你的整个教育账单。
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
    mov dx,offset num1
    mov ah,10
    int 21h