私は割り当てのためにいくつかのコードを変更する予定です。私の問題は、コード自体が正しく動作していないことです。私はタスクの助けを求めていません。ちょうどサンプルコードを動作させるだけです。それは、どんな助けもありがとうと言われています。インテル8086 - プッシュコマンドがエラーをスローアップ
最初の第一のものは、ここでのコードは私だ。と協力することになっては:m
;Program to add two single digit numbers - answer must also be a single digit number.
.model small
.stack 100h
.data
prompt1 db 13, 10, 'Enter the first number to add:', 13, 10, '$'
prompt2 db 13, 10, 'Enter the second number:', 13, 10, '$'
answer db 13, 10, 'The answer is:', '$'
num1 db ?
num2 db ?
.code
start:
mov ax, @data
mov ds, ax
mov ax, offset prompt1 ;prompt to enter first number
call puts
call getc ;collect first number
mov num1, al ;and save
mov ax, offset prompt2 ;prompt to enter 2nd number
call puts
call getc ;collect second number
mov num2, al ;and save
mov ax, offset answer ;display answer message
call puts
mov al, num1
add al, num2 ;calculate answer
sub al, '0' ;convert to a character for display
mov dl, al
call putc ;and display it
mov ax, 4c00h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
puts: ; display a string terminating in $
push ax bx cx dx ; save ax, bx, cx, dx
mov dx, ax ; address of string must be stored in dx
mov ah, 9h
int 21h ; MSDOS called to display string
pop dx cx bx ax ; restore dx cx bx ax
ret
getc:
push bx cx dx ; save bx cx dx
mov dx, ax ; address of string must be stored in dx
mov ah, 1h ; char read into al, and output on screen
int 21h ; MSDOS called to read char
pop dx cx bx ; restore dx cx bx
ret
putc:
push ax bx cx dx ; save ax bx cx dx
mov ah, 02h
int 21h ; MSDOS called to display char
pop dx cx bx ax ; restore dx cx bx ax
ret
end start
私はコンパイルして実行しようとすると、それはアップ投げエラーがライン48上で、次のとおりです。
問題のwrong parameters: PUSH ax bx cx dx
行は次のとおりです。
push ax bx cx dx ; save ax, bx, cx, dx
任意およびすべてのヘルプをいただければ幸いです。
私はアセンブリをしてから年を取っていますが、あなたはもう一方を押していくことはできませんか? 'push bx'、' push cx'、 'push dx'、' pop'の逆順である。 – Axel
あなたはどのアセンブラを使用していますか?構文 'push 'はTASM AFAIKによってのみサポートされています –
私はemu8086を使用しています。 OP –