;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Local Procedures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NEAR MyProc ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NAME procedure ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; procedur.asm ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Description: Shows how to declare a procedure. ; CGROUP GROUP CODE DGROUP GROUP DATA, STACK CODE SEGMENT PUBLIC 'CODE' ASSUME CS: CGROUP, DS: DGROUP, SS: DGROUP main: CLI ; ensure interrupts are disabled MOV AX, DGROUP MOV SS, AX MOV SP, OFFSET(DGROUP:TopOfStack) MOV AX, DGROUP MOV DS, AX CALL MyProc ; call your procedure forever: JMP forever ; a procedure MyProc PROC NEAR PUSH AX ; push registers you will change PUSH BX ; <-- your code goes here POP BX ; pop the registers in the reverse order that POP AX ; they were pushed RET ; don't forget to return! MyProc ENDP CODE ENDS DATA SEGMENT PUBLIC 'DATA' ; Here is where you will declare [memory] variables. DATA ENDS STACK SEGMENT PUBLIC 'STACK' DW 0100H DUP (?) ;256 words TopOfStack LABEL WORD STACK ENDS END main