Ĺ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
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