私は基本的な電卓を作っています(私は明日試験を受けています)が、固まっています。 私は配列に最初のnum、アクション(+ OR - )、次に配列に行く第2の数字(1-4の数字でなければならない)を得ています。 どのように私は配列からすべての数字を取得し、完全な数に変換(バイナリに変換)、数学的なアクションを行い、16進数に変換し、それを印刷するのですか? これは、分離された関数で行い、最初のnumを入力するメッセージが表示されたときにユーザーが0を入力したときにのみ、プログラムが終了します。 これは私のコードです。あなたが私の質問とコードを理解してくれることを願っています(私がインターネット上で探しているものに似たものを見つけることができませんでした)。 感謝:)関数と配列を使ったアセンブリ計算(サブ&追加)
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
でも、文字列を数値に変換するサンプルがいっぱいです...さらに具体的には何が問題になっているのですか?アルゴリズムが必要ですか、実装していませんか?もしそうなら、正確にどこですか? PS:あなたのコードをコメントしてください。これが学校の課題であれば、学習教材を再訪して先生に相談してください。 – Jester