Je suis supposé modifier du code pour une affectation. Mon problème est que le code lui-même ne fonctionne pas correctement. Je ne demande pas d'aide pour la tâche, juste pour que l'exemple de code fonctionne. Cela étant dit, toute aide est appréciée.Intel 8086 - Pousser la commande en lançant des erreurs
Pour commencer, voici le code I; suis censé travailler avec:
;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
L'erreur, il est de vomir quand je tente de compiler et exécuter est sur la ligne 48, et est:
wrong parameters: PUSH ax bx cx dx
La ligne en question est:
push ax bx cx dx ; save ax, bx, cx, dx
toute aide serait grandement appréciée.
Cela fait des années que je n'ai pas assemblé, mais est-ce que vous ne pouvez pas pousser l'un après l'autre? 'push bx',' push cx', 'push dx' et la même chose pour' pop' dans l'ordre inverse. – Axel
Quel assembleur utilisez-vous? La syntaxe 'push' est prise en charge uniquement par TASM AFAIK –
J'utilise emu8086, et je l'ai fonctionné. Info dans les modifications à l'OP –