ďťż

Ładny brzuch

Witam, mam problem ze skompilowaniem programu, który powinien sprawdzać czy dwie wprowadzone liczby hex są sobie równe i wyświetla napis prawda, w innym wypadku wyświetla napis fałsz, jednak podczas asemblacji TASM wyrzuca mi dwa błędy brzmiące następująco:

Assembling file: prog.ASM
**Error** prog.ASM(76) Too few operands to instruction
**Error** prog.ASM(135) Too few operands to instruction
Error messages: 2
Warning messages: None
Passes: 1
Remaining memory: 451k

kod programu jest następujący:

DANE SEGMENT
TXT1 db 'Podaj L1: $'
ZM1 db 0,0,0,0
TXT2 db 'Podaj L2: $'
ZM2 db 0,0,0,0
TRUE db 'PRAWDA$'
FALSE db 'FALSZ$'

DANE ENDS

STS SEGMENT STACK

db 256 DUP (?)

STS ENDS

PROG SEGMENT
ASSUME DS:DANE, CS:PROG, SS:STS
START:
MOV AX,SEG DANE
MOV DS,AX

MOV AH,9
MOV DX,OFFSET TXT1
INT 21h

MOV AH,1
INT 21h
MOV ZM1,AL
CMP AL,3Ah
JB CYFRA1
SUB AL,55
JMP KON1
cYFRA1:
SUB AL,48

KON1:

INT 21h
MOV ZM1+1,AL
CMP AL,3Ah
JB CYFRA2
SUB AL,55
JMP KON2
cYFRA2:
SUB AL,48

KON2:

INT 21h
MOV ZM1+2,AL
CMP AL,3Ah
JB CYFRA3
SUB AL,55
JMP KON3
cYFRA3:
SUB AL,48

KON3:

INT 21h
MOV ZM1+3,AL
CMP AL,3Ah
JB CYFRA4
SUB AL,55
JMP KON4
cYFRA4:
SUB AL,48

KON4:

MOV DH,ZM1
SHL DH,4
ADD DH,ZM1+1
MOV DL ZM1+2 ; odnośnie tej linii rzuca się TASM
SHL DL,4
ADD DL,ZM1+3
MOV SI,DX

MOV AH,9
MOV DX,OFFSET TXT2
INT 21h

MOV AH,1
INT 21h
MOV ZM2,AL
CMP AL,3Ah
JB CYFRA5
SUB AL,55
JMP KON5
cYFRA5:
SUB AL,48

KON5:

INT 21h
MOV ZM2+1,AL
CMP AL,3Ah
JB CYFRA6
SUB AL,55
JMP KON6
cYFRA6:
SUB AL,48

KON6:

INT 21h
MOV ZM2+2,AL
CMP AL,3Ah
JB CYFRA7
SUB AL,55
JMP KON7
cYFRA7:
SUB AL,48

KON7:

INT 21h
MOV ZM2+3,AL
CMP AL,3Ah
JB CYFRA8
SUB AL,55
JMP KON8
cYFRA8:
SUB AL,48

KON8:

MOV CH,ZM2
SHL CH,4
ADD CH,ZM2+1
MOV CL ZM2+2 ; odnośnie tej linii rzuca się TASM
SHL CL,4
ADD CL,ZM2+3

CMP SI,CX
JZ PRAWDA
JMP FALSZ

PRAWDA:
MOV AH,9h
MOV DX,OFFSET TRUE
INT 21h

FALSZ:
MOV AH,9h
MOV DX,OFFSET FALSE
INT 21h

MOV AH,4Ch
INT 21h

PROG ENDS
END START

komentarzem są opatrzone linie odnośnie których TASM rzuca się. Z góry dziękuję za szybką pomoc.



Jak nietrudno zauważyć, brakuje przecinka między argumentami instrukcji mov.
Użytkownik kamilkk edytował ten post 15 styczeń 2009, 22:31

Jak nietrudno zauważyć, brakuje przecinka między argumentami instrukcji mov.

ano rzeczywiście, wielkie dzięki ;))

Przyjrzyj się dokładnie każdej linijce ;)

MOV DH , ZM1 ADD DH , ZM1+1 MOV DL ZM1+2; odnośnie tej linii rzuca się TASM MOV CH , ZM2 ADD CH , ZM2+1 MOV CL ZM2+2; odnośnie tej linii rzuca się TASM

EDIT: Za długo pisałem :P
Użytkownik Kozack edytował ten post 15 styczeń 2009, 22:53
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •