汇编语言程序设计及上机指导7高级汇编语言程序设计

上传人:千****8 文档编号:359553988 上传时间:2023-09-01 格式:PPT 页数:173 大小:8.38MB
返回 下载 相关 举报
汇编语言程序设计及上机指导7高级汇编语言程序设计_第1页
第1页 / 共173页
汇编语言程序设计及上机指导7高级汇编语言程序设计_第2页
第2页 / 共173页
汇编语言程序设计及上机指导7高级汇编语言程序设计_第3页
第3页 / 共173页
汇编语言程序设计及上机指导7高级汇编语言程序设计_第4页
第4页 / 共173页
汇编语言程序设计及上机指导7高级汇编语言程序设计_第5页
第5页 / 共173页
点击查看更多>>
资源描述

《汇编语言程序设计及上机指导7高级汇编语言程序设计》由会员分享,可在线阅读,更多相关《汇编语言程序设计及上机指导7高级汇编语言程序设计(173页珍藏版)》请在金锄头文库上搜索。

1、第7章 高级汇编语言程序设计【本章提要本章提要本章提要本章提要】本章叙述几种难道较大的程序设计技术,包括本章叙述几种难道较大的程序设计技术,包括本章叙述几种难道较大的程序设计技术,包括本章叙述几种难道较大的程序设计技术,包括CPUCPUCPUCPU工作模式的工作模式的工作模式的工作模式的切换,以及切换,以及切换,以及切换,以及32323232位和位和位和位和64646464位位位位WindowsWindowsWindowsWindows汇编语言程序的设计,最后讲汇编语言程序的设计,最后讲汇编语言程序的设计,最后讲汇编语言程序的设计,最后讲述汇编语言和高级语言的简单混合编程。述汇编语言和高级语言

2、的简单混合编程。述汇编语言和高级语言的简单混合编程。述汇编语言和高级语言的简单混合编程。【学习目标学习目标学习目标学习目标】掌握掌握掌握掌握32323232位、位、位、位、64646464位位位位WindowsWindowsWindowsWindows程序的汇编语言设计程序的汇编语言设计程序的汇编语言设计程序的汇编语言设计的基本方法的基本方法的基本方法的基本方法 简单掌握简单掌握简单掌握简单掌握MASM32MASM32MASM32MASM32以及以及以及以及FASMFASMFASMFASM汇编工具的基本应汇编工具的基本应汇编工具的基本应汇编工具的基本应用用用用 简要掌握汇编语言和高级语言的混合

3、编程及简要掌握汇编语言和高级语言的混合编程及简要掌握汇编语言和高级语言的混合编程及简要掌握汇编语言和高级语言的混合编程及其汇编、编译和其汇编、编译和其汇编、编译和其汇编、编译和 链接过程链接过程链接过程链接过程2023/8/317.1 保护模式编程介绍保护模式编程介绍 7.1.1 7.1.1 保护模式的特征保护模式的特征保护模式的特征保护模式的特征 实模式下的寄存器、寻址方式和指令等基本概念,除特别说明外实模式下的寄存器、寻址方式和指令等基本概念,除特别说明外实模式下的寄存器、寻址方式和指令等基本概念,除特别说明外实模式下的寄存器、寻址方式和指令等基本概念,除特别说明外在保护方式下仍然保持。尽

4、管实方式下在保护方式下仍然保持。尽管实方式下在保护方式下仍然保持。尽管实方式下在保护方式下仍然保持。尽管实方式下CPUCPU的功能要大大超过其的功能要大大超过其的功能要大大超过其的功能要大大超过其先前的处理器,但只有在保护方式下,才能发挥其更大的作用。先前的处理器,但只有在保护方式下,才能发挥其更大的作用。先前的处理器,但只有在保护方式下,才能发挥其更大的作用。先前的处理器,但只有在保护方式下,才能发挥其更大的作用。在保护方式下,全部在保护方式下,全部在保护方式下,全部在保护方式下,全部3232条地址线有效,可寻址高达条地址线有效,可寻址高达条地址线有效,可寻址高达条地址线有效,可寻址高达4G

5、4G字节的物字节的物字节的物字节的物理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持;支持多任务,能够快速地进行任务虚拟存储器提供了硬件支持;支持多任务,能够快速地进行任务虚拟

6、存储器提供了硬件支持;支持多任务,能够快速地进行任务虚拟存储器提供了硬件支持;支持多任务,能够快速地进行任务切换和保护任务环境;切换和保护任务环境;切换和保护任务环境;切换和保护任务环境;4 4个特权级和完善的特权检查机制,既能个特权级和完善的特权检查机制,既能个特权级和完善的特权检查机制,既能个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离;实现资源共享又能保证代码和数据的安全和保密及任务的隔离;实现资源共享又能保证代码和数据的安全和保密及任务的隔离;实现资源共享又能保证代码和数据的安全和保密及任务的隔离;支持虚拟支持虚拟支持虚拟支持虚拟8086808

7、6方式,便于在保护方式下同时又能执行方式,便于在保护方式下同时又能执行方式,便于在保护方式下同时又能执行方式,便于在保护方式下同时又能执行80868086程程程程序。序。序。序。2023/8/317.1.2 保护模式编程保护模式编程 保护模式编程的要点就是如何实现实模式和保护模式编程的要点就是如何实现实模式和保护模式的相互切换。保护模式的相互切换。一、从实模式切换到保护模式一、从实模式切换到保护模式 从实模式切换到保护模式一般需要两个步骤:从实模式切换到保护模式一般需要两个步骤:作好切换到保护模式下的准备;作好切换到保护模式下的准备;切换到保护模式。切换到保护模式。主要准备工作就是建立全局描述

8、符表,并使主要准备工作就是建立全局描述符表,并使GDTR指向指向GDT,因为切换到保护模式下,因为切换到保护模式下,至少要将代码段的选择子装入到至少要将代码段的选择子装入到CS中。中。2023/8/311 1)定义好段描述符的结构:)定义好段描述符的结构:)定义好段描述符的结构:)定义好段描述符的结构:DESCRIPTOR STRUCT DESCRIPTOR STRUCT ;每个段描述符占;每个段描述符占;每个段描述符占;每个段描述符占8 8个字节个字节个字节个字节LIMIT DW 0 ;段界限;段界限BASEL DW 0 ;段基址的低;段基址的低16位位BASEM DB 0 ;段基址的;段基

9、址的1623位位ATTRIBUTES DW 0;段属性;段属性BASEH DB 0 ;段基址的高;段基址的高8位位,2431DESCRIPTOR ENDSDESCRIPTOR ENDS2 2)定义好伪描述符:)定义好伪描述符:)定义好伪描述符:)定义好伪描述符:PDESCRIPTOR STRUCT PDESCRIPTOR STRUCT ;装入;装入;装入;装入4848位全局描述符表寄存器时要用到位全局描述符表寄存器时要用到位全局描述符表寄存器时要用到位全局描述符表寄存器时要用到LIMIT DW 0 ;段界限;段界限BASE DD 0 ;段基址;段基址PDESCRIPTOR ENDSPDESCR

10、IPTOR ENDS3 3)通常要定义一个段间跳转的宏,这样的话就可以保证在进入保护模式)通常要定义一个段间跳转的宏,这样的话就可以保证在进入保护模式)通常要定义一个段间跳转的宏,这样的话就可以保证在进入保护模式)通常要定义一个段间跳转的宏,这样的话就可以保证在进入保护模式时将代码段的选择子装入到时将代码段的选择子装入到时将代码段的选择子装入到时将代码段的选择子装入到CSCS寄存器。寄存器。寄存器。寄存器。JUMPFAR MACRO selector,offsetsJUMPFAR MACRO selector,offsetsDB 0EAH ;0EAH为为JUMP指令的机器码指令的机器码DW o

11、ffsets ;段偏移;段偏移DW selector ;段选择子;段选择子ENDMENDM2023/8/314 4)打开)打开)打开)打开A20A20地址线:保护模式下访问的地址空间超过地址线:保护模式下访问的地址空间超过地址线:保护模式下访问的地址空间超过地址线:保护模式下访问的地址空间超过1M1M,所以必须要,所以必须要,所以必须要,所以必须要用到用到用到用到A20A20地址线。地址线。地址线。地址线。ENABLE_A20 MACRO ENABLE_A20 MACRO ;通过;通过;通过;通过92H92H号端口的输出,可以使地址线号端口的输出,可以使地址线号端口的输出,可以使地址线号端口的

12、输出,可以使地址线 ;A20A20打开,能够被访问打开,能够被访问打开,能够被访问打开,能够被访问 PUSH AXPUSH AX IN AL,92H IN AL,92H OR AL,2 OR AL,2 ;在;在;在;在92H92H号端口的号端口的号端口的号端口的d1d1位输出位输出位输出位输出1 1,打开,打开,打开,打开A20A20地址线地址线地址线地址线 OUT 92H,ALOUT 92H,AL POP AX POP AXENDMENDM5 5)切换到保护模式下的最关键的动作为,将)切换到保护模式下的最关键的动作为,将)切换到保护模式下的最关键的动作为,将)切换到保护模式下的最关键的动作为

13、,将CR0CR0寄存中的第寄存中的第寄存中的第寄存中的第0 0位置位置位置位置1 1。TO_PROTECT MACROTO_PROTECT MACROMOV EAX,CR0OR CR0,1MOV CR0,EAXENDMENDM2023/8/31二、保护模式切换到实模式二、保护模式切换到实模式二、保护模式切换到实模式二、保护模式切换到实模式显而易见,在保护模式返回到实模式时,只要做和上述的几个动作相反显而易见,在保护模式返回到实模式时,只要做和上述的几个动作相反显而易见,在保护模式返回到实模式时,只要做和上述的几个动作相反显而易见,在保护模式返回到实模式时,只要做和上述的几个动作相反的动作就行了

14、。主要要做好以下几个方面:的动作就行了。主要要做好以下几个方面:的动作就行了。主要要做好以下几个方面:的动作就行了。主要要做好以下几个方面:1 1)定义一个宏,回到实模式,将)定义一个宏,回到实模式,将)定义一个宏,回到实模式,将)定义一个宏,回到实模式,将CR0CR0寄存中的第寄存中的第寄存中的第寄存中的第0 0位清位清位清位清0 0。TO_REAL MACROTO_REAL MACRO mov eax,cr0 mov eax,cr0 and eax,0fffffffeh and eax,0fffffffeh mov cr0,eax mov cr0,eaxENDMENDM2 2)定义一个宏,

15、关闭)定义一个宏,关闭)定义一个宏,关闭)定义一个宏,关闭A20A20地址线。地址线。地址线。地址线。DISABLE_A20 MACRO DISABLE_A20 MACRO PUSH AX PUSH AX IN AL,92HIN AL,92HAND AL,0FDH AND AL,0FDH ;在;在;在;在92H92H号端口的号端口的号端口的号端口的d1d1位输出位输出位输出位输出0 0,关闭,关闭,关闭,关闭A20A20地址线地址线地址线地址线OUT 92H,ALOUT 92H,ALPOP AXPOP AXENDMENDM3 3)恢复)恢复)恢复)恢复DSDS,使其内容为数据段基址,可用以下两

16、条指令:,使其内容为数据段基址,可用以下两条指令:,使其内容为数据段基址,可用以下两条指令:,使其内容为数据段基址,可用以下两条指令:mov ax,DATAmov ax,DATAmov ds,axmov ds,ax4 4)用一个段间跳转的宏,清指令预取队列)用一个段间跳转的宏,清指令预取队列)用一个段间跳转的宏,清指令预取队列)用一个段间跳转的宏,清指令预取队列,使使使使CSCS内容为代码段基址。内容为代码段基址。内容为代码段基址。内容为代码段基址。2023/8/31三具体实现方法三具体实现方法三具体实现方法三具体实现方法下面的例子给出了如何从实模式转换到保护模式,并在保护模下访问下面的例子给出了如何从实模式转换到保护模式,并在保护模下访问下面的例子给出了如何从实模式转换到保护模式,并在保护模下访问下面的例子给出了如何从实模式转换到保护模式,并在保护模下访问680000H680000H单元开始的内容(数据段基地址为单元开始的内容(数据段基地址为单元开始的内容(数据段基地址为单元开始的内容(数据段基地址为680000H680000H),最后又),最后又),最后又),最后又如何从保护模式返

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号