When the EMULATE button is pressed, a message pops up:
wrong parameters: call PUNKT1 jmp M3;
Help fix this error!
Program Code:
Page 120 , 180; TITLE Lab6.asm; ;------------------------------------------------ STACKSG SEGMENT PARA "Stack" DB 256 DUP(0) STACKSG ENDS ;---------------------------------------- DATASG SEGMENT PARA 'Data' STR0 DB "press any key...$" STR1 DB " MENU of prorammu ZVUK:" STR9 DB "------------------------------------------------" STR2 DB "1 - Generic zvukov pri naghatii klavishi $" STR3 DB "2 - realiz zvukov s Random dlit i visotoy tona $" STR4 db "3 - Posled zv-v c generic tonom ot low k high $" STR5 db "4 - Posled zv-v c generic tonom ot high klow $" STR6 db "5 - Posled zv-v odn ton-ti ot short k long dlit" STR7 db "6 - Posled zv-v zad polzovatelem" STR8 db "7 - Exit is programmu" STRP1 DB "DLYA VIHODA PRESS BUTTON -- 7" STRP2 DB "VIVOD MELODIY" STRP3 DB "VIVOD OKTAV SNIZU V VERH PO TONU" STRP4 DB "VIVOD OKTAV S VERHU V NIZ PO TONU" INADR db 2 dup (' '); INpunkt6 db 6 dup (' '); CHANN_B EQU 61h ; CHANN_B - adres regista curcit 8255 FREQ EQU INpunkt6 ; FREG - CHASTOTA CYCL EQU 30000 ; CYCL - KOL-VO ciklov formiorvaniya «1» ? «0» DATASG ENDS ;--------------------------------------------------------------------------- CODES SEGMENT PARA 'Code' BEGIN PROC MENU ASSUME SS:STACKSG, CS:CODES, DS:DATASG, ES:NOTHING PUSH DS;SAVE STACK ADRES IN DS ADRES SUB AX,AX; PUSH AX; ; set segment registers: mov ax, DATASG mov ds, ax mov es, ax ;SET CURSOR POZITION MOV AH,02;SELECT POZITION CURSOR MOV BH,00;CLEARING SCREEN MOV DH,05; STRING MOV DL,32; COLUMN INT 10H; JMP M1; M2:;CLEARING SCREEN MOV AX,0600H; MOV BH, 7; MOV CX,0000; MOV DX,184Fh; INT 10H; ; output string at ds:dx M1: mov ah, 9 ;ZAPROS VIVOVODA NA EKRAN; MOV AH, 7 LEA DX,STR1 INC DH;PEREVOD KURSORA NA NEW STRING LEA DX,STR9 INC DH; LEA DX,STR2 INC DH; LEA DX,STR3; INC DH; LEA DX,STR4; INC DH; LEA DX,STR5; INC DH; LEA DX,STR6; INC DH; LEA DX,STR7; INC DH; LEA DX,STR8; INC DH; LEA DX,STR9; INC DH; lea dx,STR0; int 21h JMP M3; ;pole vvoda M3: MOV AH,3FH; MOV BX, 00; MOV CX, 2; ; wait for any key.... mov ah, 1 lea DX,INADR; int 21h CMP DX,31h; JNZ punkt1; CMP DX,32h; JNZ punkt2; CMP DX,33h; JNZ punkt3 CMP DX,34h; JNZ punkt4; CMP DX,35h; JNZ punkt5; CMP DX,36h; JNZ punkt6; CMP DX,37h; JNZ punkt7; punkt1: call PUNKT1 jmp M3; punkt2: call PUNKT2 jmp M3; punkt3: call PUNKT3 jmp M3; punkt4: call PUNKT4 jmp M3; punkt5: call PUNKT5 jmp M3; punkt6: call PUNKT6 jmp M3; punkt7: mov ax, 4c00h ; exit to operating system. int 21h end start ; set entry point and stop the assembler. ;--------------------------------------------------------------------------- CODES SEGMENT PARA 'Code' BEGIN PROC PUNKT1; ZAPOLN 180 YACHEEK ELEM MAS ASSUME SS:STACKSG, CS:CODES, DS:DATASG, ES:NOTHING PUSH DS;SAVE STACK ADRES IN DS ADRES SUB AX,AX; PUSH AX; ;CLEARING SCREEN MOV AX,0600H; MOV BH, 7; MOV CX,0000; MOV DX,184Fh; INT 10H; mov ah, 9 ;ZAPROS VIVOVODA NA EKRAN; MOV AH, 7 LEA DX,STRP1 ;SBROS KLAVU MOV AH,OCH; Mov AX,0000; INT 21H; c1: CMP 61H,AX; JNZ DO_N; CMP 77H,AX; JNZ DO_D_RE_B; CMP 73H,AX; JNZ RE_N; CMP 65H,AX ; JNZ RE_D_MI_B; CMP 64H,AX; JNZ MI_N; CMP 66H,AX; JNZ FA_N; CMP 74H,AX; JNZ FA_D_SOL_B; CMP 67H,AX; JNZ SOL_N; CMP 79H,AX; JNZ SOL_D_LYA_B; CMP 68H,AX; JNZ LYA_N; CMP 75H,AX; JNZ LYA_D_SI_B; CMP 6AH,AX; JNZ SI_N; CMP 6AH,AX; JNZ DO2_N; CMP 37h,AX; JNZ exit; Loop c1; exit: ret; ;--------------------------------------------------------------------------------------- DO_N: ;generation noti DO REG_B ORG 61h ; REG_B - adres regista curcit 8253 COM_REG ORG 43h ; COM_REG - adres comand of registra curcit8253 CHANN_2 ORG 42h ; CHANN_2 - adres chanak 2nd circuit 8253 mov al, 10110110b ; reghym 3, type 3, chanel 2, dan - binary out COM_REG, al ; write registr mov ax, 4561 ; 1193180(Gc)/261(Gc) = 4561 out CHANN_2, al ; zapis mladsh byta in "zadvighka" mov al, ah ; out CHAN_2, ah - it's not stayting! out CHANN_2, al ; zapis starsh byta in "zadvighka" in al, REG_B ; Readin previos data from Registr b or al, 03h ; Insert in "1" bits 1 & 0 of registr b out REG_B, al ; writing new data in reg_b ret ; exit from program ;============================================================================== BEGIN ENDP CODES ENDS END BEGIN
punkt1: call PUNKT1 jmp M3;not like the truth. 2 operations in 1 line. Error (if the translator is not exotic) - Alexey Sarovsky