汇編语言程序设计 LE BX BUF ;量地址指针 MOV AL. 2 CALL MULL ;过程调用 MOV AL. 5 CALL MULL 过程调用 MOV AL. 8 CALL MULL ;过程调用 MOV AH. 4CH 21H MULL PROC ;果法子程序 MUL BYTE PTR [BX] ;儆乘法结果在A ADD WORD PTR RES AX 做加法 MOV AX, 0 AX清0 INC BX ;地址加1 RET 沤回主程序 MULL ENDP CODE ENDS END START
汇编语言 程序设计 LEA BX,BUF ;置地址指针 MOV AL,2 CALL MULL ;过程调用 MOV AL,5 CALL MULL ;过程调用 MOV AL,8 CALL MULL ;过程调用 MOV AH,4CH INT 21H MULL PROC ;乘法子程序 MUL BYTE PTR [BX] ;做乘法结果在AX ADD WORD PTR RES,AX ;做加法 MOV AX,0 ;AX清0 INC BX ;地址加1 RET ;返回主程序 MULL ENDP CODE ENDS END START
汇編语言程序设计 2.段间调用 子稈序如果段间调用时,必须定义为FAR类型。 段闻调用通常用于不同模块之间的调用。 编写不同模块的段间调用程序,应该注意以下几个个问题: (1)主程序模埉和子程序模块分别汇编,然后用连接程序 将它们连接在一起。 (2)在主程序模块中,主程序所调用的外部过程名必须用 EXTRN伪指令说明。 (3)在过程模块中,提供给外段调用的过程名必须用 PUBLIO伪指令说明。 (4)模块间其它公用符号名及外部符号名的定义不可缺少。 例6.2】将【例6.1】中的段内调用改为段间调用
汇编语言 程序设计 2.段间调用 子程序如果段间调用时,必须定义为FAR类型。 段间调用通常用于不同模块之间的调用。 编写不同模块的段间调用程序,应该注意以下几个个问题: (1)主程序模块和子程序模块分别汇编,然后用连接程序 将它们连接在一起。 (2)在主程序模块中,主程序所调用的外部过程名必须用 EXTRN伪指令说明。 (3)在过程模块中,提供给外段调用的过程名必须用 PUBLIC伪指令说明。 (4)模块间其它公用符号名及外部符号名的定义不可缺少。 【例6.2】将【例6.1】 中的段内调用改为段间调用
汇編语言程序设计 源福序之 NAME EXAM6 2 EXTRN MULL: FAR 外部引用说明 PUBLIC RES 定义公用名 DATA SEGMENT BUF DB 71H. 0A4H. 9BH RES DB 2 DUP(?) DATA ENDS STACK SEGMENT PARA STACK STACK STAN DB 100DUP(? TOP EQU LENGTH STAPN STACK ENDS CODE SEGMENT ASSUME CS: CODE. DS DAtA. SS STACK START: MOV AX. dATA MOV DS. AX MOV AX. STACK Mov SS. AX MOV AX, TOP MOV SP AX MOV AX. 0 AX清0 MOv WORD PTR RES AX RES字单元清0 LEA BX BUF 置地址指针
汇编语言 程序设计 源程序为: NAME EXAM6_2 EXTRN MULL:FAR ;外部引用说明 PUBLIC RES ;定义公用名 DATA SEGMENT BUF DB 71H,0A4H,9BH RES DB 2 DUP(?) DATA ENDS STACK SEGMENT PARA STACK 'STACK' STAPN DB 100 DUP(?) TOP EQU LENGTH STAPN STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV AX,0 ;AX清0 MOV WORD PTR RES,AX ;RES字单元清0 LEA BX,BUF ;置地址指针