Presentation is loading. Please wait.

Presentation is loading. Please wait.

微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.

Similar presentations


Presentation on theme: "微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰."— Presentation transcript:

1 微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰

2 第5章 汇编语言程序设计 本讲主要内容 汇编语言程序设计 过程程序设计

3 4. 子程序设计 … 子程序又称为过程,它相当于高级语言的过程或函数,是一个独立的程序段,能完成某些确定的功能,并能被其它程序调用。
第5章 汇编语言程序设计 4. 子程序设计 子程序又称为过程,它相当于高级语言的过程或函数,是一个独立的程序段,能完成某些确定的功能,并能被其它程序调用。 (1) 过程的定义 过程名 PROC 类型 RET 过程名 ENDP

4 … … … 第5章 汇编语言程序设计 (2)过程的调用 CALL 过程名 ① 段内调用 CSEG SEGMENT CALL SUBT
第5章 汇编语言程序设计 (2)过程的调用 CALL 过程名 ① 段内调用 CSEG SEGMENT CALL SUBT MOV AH,4CH INT 21H SUBT PROC NEAR RET SUBT ENDP CSEG ENDS

5 第5章 汇编语言程序设计 ② 段间调用 XSEG SEGMENT YSEG SEGMENT CALL SUBT CALL SUBT1 MOV AH,4CH YSEG ENDS INT 21H SUBT1 PROC FAR RET SUBT1 ENDP XSEG ENDS

6 (3) 子程序在源程序中的位置 第5章 汇编语言程序设计
第5章 汇编语言程序设计 (3) 子程序在源程序中的位置 子程序一般是放在返回DOS语句和段结束语句之间的位置。因为在正常情况下这个区域的程序是不会被执行的。 当然,也可以放在主程序的最前面。这时要注意主程序的起始标号要在子程序之后。 XSEG SEGMENT CALL SUBT1 MOV AH,4CH INT 21H SUBT1 PROC FAR RET SUBT1 ENDP XSEG ENDS XSEG SEGMENT SUBT1 PROC FAR RET SUBT1 ENDP STRAT: CALL SUBT1 MOV AH,4CH INT 21H XSEG ENDS END STRAT

7 综上,当需多次访问的程序段较长,访问次数又不是太多时,选用子程序结构较好。
第5章 汇编语言程序设计 (4)宏指令与子程序(过程) ① 空间开销:子程序优于宏指令。 ② 时间开销:宏指令优于子程序。 综上,当需多次访问的程序段较长,访问次数又不是太多时,选用子程序结构较好。 当需多次访问的程序段较短,访问次数又很频繁时,选用宏指令结构显然要更好些。

8 要求转换ASCII码部分分别用子程序调用和宏调用的方法实现。
第5章 汇编语言程序设计 (5) 子程序调用和宏调用使用的例子 [例] 在存储器Hexdata单元中存放着4位十六进制数4D7EH,试编写程序将这4位十六进制数分别转换为相应的ASCII码,并依次存放到Result的4个单元中去,并依次在屏幕上显示。 要求转换ASCII码部分分别用子程序调用和宏调用的方法实现。

9 第5章 汇编语言程序设计 ① 用子程序调用方法编程: LEA SI, RESULT+3 MOV CX, 4 STD LOOP1: LODSB
第5章 汇编语言程序设计 ① 用子程序调用方法编程: LEA SI, RESULT+3 MOV CX, 4 STD LOOP1: LODSB MOV DL, AL MOV AH, 02H INT 21H LOOP LOOP1 MOV DL, 'H' MOV AH, 4CH ;十六进制转换成ASCII码子程序 HEXASC PROC CMP AL, 0AH JB P30 ADD AL, 07H P30: ADD AL, 30H RET HEXASC ENDP CODE ENDS END START DATA SEGMENT Hexdata DW 4D7EH Result DB 4 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 4 LEA DI, Result MOV BX, Hexdata NEXT: MOV AX, BX AND AL, 0FH CALL HEXASC ;子程序调用 MOV [DI], AL INC DI PUSH CX MOV CL, 4 SHR BX, CL POP CX LOOP NEXT

10 第5章 汇编语言程序设计 ② 用宏调用方法编程 HEXASC ;宏调用 MOV [DI], AL INC DI PUSH CX
第5章 汇编语言程序设计 ② 用宏调用方法编程 HEXASC ;宏调用 MOV [DI], AL INC DI PUSH CX MOV CL, 4 SHR BX, CL POP CX LOOP NEXT LEA SI, RESULT+3 MOV CX, 4 STD LOOP1: LODSB MOV DL, AL MOV AH, 02H INT 21H LOOP LOOP1 MOV DL, 'H' MOV AH, 4CH INT 21H  CODE ENDS END START DATA SEGMENT Hexdata DW 4D7EH Result DB 4 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX ;十六进制转换成ASCII码宏定义 HEXASC MACRO CMP AL, 0AH JB PLUS30 ADD AL, 07H PLUS30: ADD AL, 30H ENDM MOV CX, 4 LEA DI, Result MOV BX, [SI] NEXT: MOV AX, BX AND AL, 0FH

11 第5章 汇编语言程序设计 LEA SI, RESULT+3 START: MOV AX, DATA MOV CX, 4 MOV DS, AX
第5章 汇编语言程序设计 LEA SI, RESULT+3 MOV CX, 4 STD LOOP1: LODSB MOV DL, AL MOV AH, 02H INT 21H LOOP LOOP1 MOV DL, 'H' MOV AH, 4CH INT 21H  START: MOV AX, DATA MOV DS, AX MOV CX, 4 LEA DI, Result MOV BX, [SI] NEXT: MOV AX, BX AND AL, 0FH CMP AL, 0AH JB PLUS30 ADD AL, 07H PLUS30: ADD AL, 30H MOV [DI], AL INC DI PUSH CX MOV CL, 4 SHR BX, CL POP CX LOOP NEXT

12 第5章 汇编语言程序设计小结 第5章 汇编语言程序设计 首先,我们学习了汇编语言源程序的分段结构和语句分类及语 句格式。
第5章 汇编语言程序设计 第5章 汇编语言程序设计小结 首先,我们学习了汇编语言源程序的分段结构和语句分类及语 句格式。 其次,详细学习了伪指令语句和宏指令语句。 最后,我们学习了汇编语言程序设计中四种结构程序的设计方 法,即简单结构程序设计方法,循环结构程序设计方法,分支 结构程序设计方法和子程序结构程序设计方法。 另外,我们还学习了如何通过上机操作把汇编语言源程序变成 计算机能够执行的应用程序。 其中,结构程序设计是本章的重点。希望大家要熟练掌握,并 能在程序设计中灵活应用。

13 再 见


Download ppt "微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰."

Similar presentations


Ads by Google