0

電卓として機能するプログラムを作成する必要があります。私はこれを書きました:

push ds
push 0000H


data segment
    imsg1 db 13,10,'enter 1st number:$'
    imsg2 db 13,10,'enter 2nd number:$'
    imsg3 db 13,10,'sum:$'
    imsg4 db 13,10,'diff:$'
    imsg5 db 13,10,'div:$'
    imsg6 db 13,10,'product:$'
    num dw ?
    num2 dw ?
data ends
   MOV ax,data
   MOV ds,ax
      mov ah,09h
      mov dx,offset imsg1
      int 21h
   mov cx,0
   mov bx,10
   mov num,0            ; Using num instead of dx, as we usually do, because we have to store another number too.

   r1:mov ah,01h        ; For storing first number
      int 21h          
      cmp al,13
      je yy
      sub al,48
      mov cl,al
      mov ax,num
      mul bx
      add ax,cx
      mov num,ax
      jmp r1  

   yy:
      ;to enter 2nd number  
      mov ah,09h
      mov dx,offset imsg2
      int 21h

       mov cx,0
       mov bx,10
       mov num2,0

       r2:mov ah,01h
       int 21h
       cmp al,13
       je yy1
       sub al,48
       mov cl,al
       mov ax,num2
       mul bx
       add ax,cx
       mov num2,ax
       jmp r2


    yy1:
    ;TO PRINT PROMPT MSG FOR SUM
      mov ah,09h
      mov dx,offset imsg3
      int 21h

      mov ax,num                ; Move the numbers to registers before doing any operation
      mov bx,num2               ; Because we will also need the numbers for other operations
      add ax,bx                 ; Adding and storing in ax
      mov cx,0
      mov bx,10
      mov dx,0
    r3:                                 ; To print the sum
       mov dx,0
       div bx
       add dx,48
       push dx
       inc cx
       cmp ax,0
       jg r3
       mov ah,02h
       print:
        pop dx
        int 21h
       loop print

       ;TO PRINT SUBTRACTION PROMPT
       mov ah,09h
      mov dx,offset imsg4
      int 21h
       mov ax,num
       mov bx,num2
       sub ax,bx                ; Subtracting and storing in ax

       mov cx,0
      mov bx,10
      mov dx,0
    r4:                                 ; Printing the subtracted value
       mov dx,0
       div bx
       add dx,48
       push dx
       inc cx
       cmp ax,0
       jg r4
       mov ah,02h
       print1:
        pop dx
        int 21h
       loop print1

       ;TO PRINT DIVISION PROMPT
       mov ah,09h
       mov dx,offset imsg5
       int 21h
       mov dx,0
       mov ax,num
       mov bx,num2
       div bx                   ; Quotient stored in AX

       mov cx,0
       mov bx,10
       mov dx,0
    r5:                                 ; Printing the Quotient
       mov dx,0
       div bx
       add dx,48
       push dx
       inc cx
       cmp ax,0
       jg r5
       mov ah,02h
       print2:
        pop dx
        int 21h
       loop print2

       ;TO PRINT MULTIPLICATION PROMPT
       mov ah,09h
       mov dx,offset imsg6
       int 21h
       mov dx,0
       mov ax,num
       mov bx,num2
       mul bx                   ; Solution in AX

       mov cx,0
       mov bx,10
       mov dx,0
    r6:                                 ; Printing the solution
       mov dx,0
       div bx
       add dx,48
       push dx
       inc cx
       cmp ax,0
       jg r6
       mov ah,02h
       print3:
        pop dx
        int 21h
       loop print3
ret
main endp
code ends
end main

そして、私はエラーがあります:

5 行目 (データ セグメント) パーサー: 命令が予想される
18 行目 (mov dx,offset imsg1): コンマまたは行末が予想される
行 39(mov dx,offset imsg2): コンマまたは行末が予想される
行 62(mov dx,offset imsg3) ): コンマまたは行末予想
87 行目(mov dx,offset imsg4): コンマまたは行末予想
行 112(mov dx,offset imsg5): コンマまたは行末予想
行 138(mov dx,offset imsg6):カンマまたは行末が予想される
162 行目 (メイン endp): エラー: パーサー: 命令が予想される
163 行目 (メイン エンド): エラー: パーサー: 命令が予想される
164 行目 (メインの終わり): エラー: パーサー: 命令が予想される

私は週からそれらを解決しようとしていますが、成功していません。ここにコード全体を入れて申し訳ありませんが、それほど長いスニペットではないので、誰かがこれを手伝ってくれるかもしれません..ありがとう!

4

2 に答える 2