2

以下にこの電卓コードがあります。正常に動作しますが、「除算」にジャンプしません..私はまだアセンブリプログラミングを学習している最中です..これを理解する方法について助けが必要です...

.モデル小
.スタック 100h

。データ
msg1 db 13,10,13,10, "最初の数字を入力してください: $"
msg2 db 13,10, "2 番目の数値を入力してください: $"
msgEr db 13,10、「エラー $」
msgCh db 13,10, "A を押して ADD 、S を SUBTRACT に、D を MULTIPLY に、F を DIVIDE に、X を押して EXIT : $ "
msgSum db 13,10,13,10, "合計: $"
msgDif db 13,10,13,10, "違い: $"
msgDiv db 13,10,13,10, "商: $"
msgMul db 13,10,13,10, "製品: $"
一時データベース?


。コード

始める:
移動斧、@data
ムーブDS、斧

lea dx、msg1
移動ああ、09h
整数 21h
移動bx、0

開始1:
移動ああ、01h
整数 21h
cmp al,0dh      
ジェネクスト1
移動ああ、0        
サブアル、30h      
押し斧         
移動斧、10d      
マルチボックス          
ポップ bx          
bx、axを追加       
jmp start1      




次1:
bxを押す
lea dx,msg2
mov ああ、09h
整数 21h

移動 bx,0


開始 2:
mov ああ、01h
整数 21h
cmp al,0dh
ジェチョイス
移動ああ、0
サブアル、30h
押し斧
移動斧、10d
マルチボックス
ポップ bx
bx、axを追加
jmp start2


選択:
lea dx、msgCh
移動ああ、09h
整数 21h

移動ああ、01h
ムーブアンサー、アル
整数 21h

cmp al,'f'
で割る

cmp al,'a'  
ジェ追加

cmp al,'s'
引き算する

cmp al,'d'
掛ける

cmp al,'x'
動くあ、4ch
整数 21h

エラー:
lea dx,msgEr
mov ああ、09h
整数 21h
ジャンプスタート


分割:
ポップアックス
div bx
押し斧
lea dx,msgDiv
mov ああ、09h
整数 21h
ポップアックス
mov cx,0
移動 dx,0
移動 bx,10d
jmp ブレーク

追加:     
ポップアックス
ax、bxを追加   
押し斧
lea dx、msgSum   
mov ああ、09h
整数 21h
ポップアックス
mov cx,0
移動 dx,0
移動 bx,10d
jmp ブレーク   

乗算:
ポップアックス
マルチボックス      
押し斧     
lea dx,msgMul   
mov ああ、09h
整数 21h
ポップアックス
mov cx,0
移動 dx,0
移動 bx,10d
jmp ブレーク


減算:
ポップアックス
サブアックス、bx
押し斧
lea dx,msgDif
mov ああ、09h
整数 21h
ポップアックス
mov cx,0
移動 dx,0
移動 bx,10d

壊す:
div bx
プッシュDX
移動 dx,0
株式会社cx
または斧、斧
休憩

答え:        
ポップDX
dl,30h を追加
mov ああ、02h
整数 21h
ループ応答

ジャンプスタート

終了開始

4

2 に答える 2