汇编语言第11章保护模式下的程序设计简介

合集下载

汇编语言程序设计

汇编语言程序设计

6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。

汇编语言程序设计

汇编语言程序设计

汇编语言程序设计汇编语言是一种低级别的编程语言,它直接操作计算机的硬件系统。

汇编语言程序设计是编写汇编语言程序的过程。

在给定的硬件平台上,汇编语言程序可以更有效地利用计算机资源,提高程序的执行速度。

汇编语言程序设计需要遵循一定的规则和指令集。

指令集是计算机硬件平台提供的一系列可用指令,通过这些指令可以对计算机的寄存器、内存、输入输出设备进行操作。

编写汇编语言程序的过程需要熟悉指令集的用法和编程规则。

汇编语言程序设计的主要任务包括数据传输、算术和逻辑运算、控制流程和存储器管理等。

数据传输是将数据从一个位置复制到另一个位置的过程,可以通过寄存器或内存进行操作。

算术和逻辑运算是对数据进行加减乘除等运算,并且进行逻辑判断和比较。

控制流程是根据条件执行不同的指令序列,包括条件分支和循环等。

存储器管理是对内存进行读写操作,包括内存的分配和释放。

编写汇编语言程序需要考虑程序的效率和可读性。

程序的效率是指程序在给定硬件平台上的执行速度和资源利用率。

程序的可读性是指程序的结构和注释是否清晰,易于理解和维护。

除了编写汇编语言程序之外,还需要进行程序的调试和优化。

调试是指在程序运行时发现和修复错误的过程,可以通过单步执行和打印调试信息等方法进行调试。

优化是对程序进行性能优化的过程,可以通过改进算法和数据结构,减少不必要的计算和内存访问等方法进行优化。

总之,汇编语言程序设计是一种底层编程技术,可以更直接地操作计算机硬件。

编写汇编语言程序需要熟悉指令集和编程规则,并考虑程序的效率和可读性。

调试和优化是编写汇编语言程序的重要环节。

汇编语言程序设计对于深入理解计算机系统和进行高性能程序开发都具有重要意义。

汇编语言程序设计概述

汇编语言程序设计概述

汇编语言程序设计概述汇编语言程序设计是计算机科学领域中一门重要的技术,它以机器语言为基础,通过汇编器将程序源代码翻译成机器指令,从而实现对计算机硬件的直接控制。

汇编语言程序设计在嵌入式系统、操作系统、驱动程序等领域有着广泛的应用。

一、汇编语言的特点汇编语言作为低级语言,具有以下特点:1. 直接操作硬件:汇编语言提供了直接访问计算机硬件的接口,可以进行底层的硬件操作。

2. 语法简洁:与高级语言相比,汇编语言的语法较为简洁,指令的数量有限且功能单一。

3. 高效性:由于汇编语言直接面向硬件,因此执行效率高,对计算机资源的利用程度较高。

二、汇编语言的程序结构汇编语言程序可以分为两个部分:数据段和代码段。

1. 数据段:数据段用于定义程序中所使用的数据,包括全局变量、常量等。

在数据段中,我们可以使用众多的汇编语言指令来定义不同类型的数据。

2. 代码段:代码段是程序的核心部分,包含了一系列的汇编指令,用于实现所需功能。

三、汇编语言的指令集汇编语言的指令集由一系列的操作码组成,不同的操作码对应着不同的功能。

常用的指令可以分为以下几类:1. 数据传输指令:用于数据在寄存器和内存之间的传输。

2. 运算指令:包括算术运算指令、逻辑运算指令等。

3. 控制转移指令:用于程序的跳转、分支和循环执行。

4. I/O指令:用于与外设进行数据的输入和输出。

四、汇编语言的开发环境在进行汇编语言程序设计之前,需要配置相应的开发环境。

常用的汇编语言开发工具有MASM、NASM等。

这些工具提供了编写、调试、运行汇编程序的功能,方便程序员进行开发和测试。

五、汇编语言程序设计的应用汇编语言程序设计广泛应用于计算机科学领域的各个方面,主要包括以下应用领域:1. 嵌入式系统开发:在嵌入式系统中,汇编语言程序设计可以直接操作硬件,实现与外设的交互和控制。

2. 操作系统开发:操作系统是计算机系统的核心,汇编语言程序设计在操作系统的开发中起着重要的作用,如处理中断、内存管理等。

汇编语言程序设计

汇编语言程序设计

汇编语言程序设计汇编语言是一种底层的计算机语言,它直接与计算机硬件交互,具有灵活性和高效性的特点。

在计算机科学领域,汇编语言程序设计是一门重要的学科。

本文将分析汇编语言程序设计的基本原理和应用,介绍其在实际项目中的应用以及相关的开发工具。

一、汇编语言程序设计的基本原理汇编语言是一种符号化的机器语言,通过使用助记符和标号来描述指令和数据。

它与计算机硬件非常接近,可以直接操作寄存器、内存和其他硬件资源。

汇编语言程序设计的基本原理包括指令的组成、寄存器的使用、内存的管理和流程控制等方面。

1.1 指令的组成汇编语言的指令由操作码和操作数组成。

操作码是指令的功能代码,用于定义指令要执行的操作。

操作数是指令的操作对象,可以是寄存器、内存地址或立即数等。

汇编语言提供了丰富的指令集,包括算术运算、逻辑运算、数据传输、控制转移等多种类型的指令。

1.2 寄存器的使用寄存器是计算机内部用于存储临时数据的高速存储器。

汇编语言通过寄存器来进行数据的传输和运算。

不同的计算机体系结构提供了不同数量和类型的寄存器。

常见的寄存器包括通用寄存器、指令指针寄存器和程序状态寄存器等。

1.3 内存的管理内存是计算机用于存储程序和数据的主要设备。

汇编语言可以通过直接指定内存地址来读取和写入数据。

内存管理的主要任务包括地址转换、数据的加载和存储、内存保护等。

汇编语言通过使用段寄存器和偏移地址的方式来管理内存。

1.4 流程控制汇编语言支持多种流程控制指令,包括条件跳转、无条件跳转、循环和子程序调用等。

通过这些指令,程序可以根据运行结果来选择不同的执行路径,实现复杂的逻辑功能。

流程控制是程序设计中的重要部分,对于优化程序性能和实现复杂算法非常关键。

二、汇编语言程序设计的应用汇编语言程序设计广泛应用于系统级编程、设备驱动、数字信号处理等领域。

以下是汇编语言程序设计在实际项目中的常见应用。

2.1 操作系统开发操作系统是计算机硬件与用户之间的接口,负责管理硬件资源和为应用程序提供服务。

《汇编语言程序设计》(第四版)教案及答案解析

《汇编语言程序设计》(第四版)教案及答案解析

《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第4版)钱晓捷主编前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (1)1.1进位计数制与不同基数的数之间的转换 (1)1.2二进制数和十六进制数的运算 (2)1.3计算机中数和字符的表示 (3)1.4几种基本的逻辑运算 (3)第 2 章 80X86计算机组织 (4)2.180X86微处理器 (4)2.2基于微处理器的计算机系统构成 (4)2.3中央处理机 (5)2.4存储器 (6)2.5外部设备 (7)第 3 章 80X86的指令系统和寻址方式 (8)3.180X86的寻址方式 (8)3.2程序占有的空间和执行时间 (10)3.380X86的指令系统 (10)第 4 章汇编语言程序格式 (27)4.1汇编程序功能 (27)4.2伪操作 (27)4.3汇编语言程序格式 (31)4.4汇编语言程序的上机过程 (34)第 5 章循环与分支程序设计 (37)5.1循环程序设计 (37)5.2分支程序设计 (38)5.3如何在实模式下发挥80386及其后继机型的优势 (38)第 6 章子程序结构 (40)6.1子程序的设计方法 (40)6.2子程序的嵌套 (41)6.3子程序举例 (41)第 7 章高级汇编语言技术 (43)7.1宏汇编 (43)7.2重复汇编 (44)7.3条件汇编 (45)第 8 章输入/输出程序设计 (46)8.1I/O设备的数据传送方式 (46)8.2程序直接控制I/O方式 (47)8.3中断传送方式 (47)第 9 章 BIOS和DOS中断 (50)9.1键盘I/O (50)9.2显示器I/O (52)9.3打印机I/O (53)9.4串行通信口I/O (54)第 10 章图形与发声系统的程序设计 (55)10.1显示方式 (55)10.2视频显示存储器 (55)10.3EGA/VGA图形程序设计 (56)10.4通用发声程序 (57)10.5乐曲程序 (58)第 11 章磁盘文件存取技术 (59)11.1磁盘的记录方式 (59)11.2文件代号式磁盘存取 (60)11.3字符设备的文件代号式I/O (61)11.4BIOS磁盘存取功能 (62)附录:《IBM—PC汇编语言程序设计》习题参考答案 (63)第一章.习题 (63)第二章.习题 (64)第三章.习题 (65)第四章.习题 (79)第五章.习题 (84)第六章.习题 (104)第七章.习题 (118)第八章.习题 (125)第九章.习题 (130)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

汇编语言程序概述、功能与设计

汇编语言程序概述、功能与设计
汇编语言程序概述、功能 和设计
汇编语言(Assembly Language)
指用指令助记符代替机器码的编程语言。汇编语 言程序结构简单,执行速度快,程序易优化,编译后 占用存储空间小,是单片机应用系统开发中最常用的 程序设计语言。汇编语言的缺点是可读性比较差,只 有熟悉单片机的指令系统,并具有一定的程序设计经 验,才能研制出功能复杂的应用程序。
(a) 单汇分编支语流言程程序; 概述(b、)功多能分支流程
和设计
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1
x0
y
1
x0
0
x0
汇编语言程序概述、功能 和设计
程序如下: START: CJNE R0, #00H, SUL1; R0中的数与00比较不等转移
MOV R1, #00H; 相等, R1← 0 SJMP SUL2 SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; (R0)>0, 则 R1←01H SJMP SUL2 NEG: MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH SUL2: RET
汇编语言程序概述、功能 和设计
机器语言(Machine Language)
直接用机器码编写程序、能够为计算机直接执行 的机器级语言。机器码是一串由二进制代码“0”和“1”组 成的二进制数据,其执行速度快,但是可读性极差。 机器语言一般只在简单的开发装置中使用,程序的设 计、输入、修改和调试都很麻烦。
汇编语言程序概述、功能 和设计
例 4 比较两个无符号数的大小。 设外部 RAM 的存储单元 ST1和 ST2中存放两个不带符号的二进制

汇编语言程序设计

汇编语言程序设计

汇编语言程序设计汇编语言是一种低级编程语言,它提供了一种让计算机可以直接理解的指令集。

它的核心价值在于,它可以控制电脑硬件的精细动作,并且比高级语言更加高效和快速。

汇编语言程序设计是一种重要的计算机科学和技术。

汇编语言是一种编程语言,它与普通的高级编程语言不同,它不能被用户直接看懂,而是需要特定的编程器才能将它翻译成计算机可以理解的机器语言。

汇编语言与其他类型的语言一样,它也有自己的编码规则。

汇编语言的作用主要是让计算机可以完成复杂的任务,并将程序指令转化为计算机可以理解的机器代码语言。

汇编语言可以让计算机更加快速、准确地完成运算和操作。

汇编语言程序设计的基本原理是,使用指令给计算机发出指令,让它完成特定的动作,然后将结果保存到特定的内存位置。

汇编语言的指令是用二进制形式表示的,它能够控制电脑硬件的精细动作,实现计算机的动态控制,提供快速、可靠的程序。

汇编语言程序设计的重要价值在于,它可以实现更加高效的程序,降低程序的运行时间,减少计算机内存的使用,保证程序的可移植性。

汇编语言还可以完成一些复杂而又不可能用高级语言实现的操作,提高计算机性能。

汇编语言程序设计具有独特的优势,在现代计算机编程中占据着重要的地位。

它不仅可以使计算机更加高效地完成任务,而且可以更好地满足用户的要求。

汇编语言程序设计能够使计算机在多种硬件中实现程序的运行,为人们的日常生活提供更加高效的服务。

汇编语言程序设计是一项高技术,它需要有专业的技术知识,熟练掌握汇编程序设计的相关技术,并有深入地构建、测试和调试汇编语言程序的经验才能够胜任。

汇编语言程序设计不仅是计算机科学的一门基础课,也是计算机技术及应用的一个重要组成部分。

汇编语言程序设计是一门技术性的课程,它既涉及机器语言的编程思想,又涉及计算机系统的结构与运行原理。

学习汇编语言的学生,需要有良好的数学基础,要掌握编程语言的特性和语法,正确理解计算机原理,才能真正掌握汇编语言程序设计的基本技术。

汇编语言程序设计方法

汇编语言程序设计方法

汇编语言程序设计方法一、简介汇编语言是一种底层编程语言,与机器语言一一对应,对计算机硬件直接进行操作。

汇编语言程序设计是一种十分重要的技能,可以优化代码执行效率,掌握汇编语言可以帮助我们更深入地理解计算机的工作原理和内部结构。

二、汇编语言的基本概念1. 指令和操作码:汇编语言中的基本单位是指令,每条指令由操作码和操作数组成。

操作码表示要进行的操作,例如加法、乘法等;操作数表示要操作的数据。

2. 寄存器:计算机内部的存储器,用于临时存储数据和指令。

不同的寄存器有不同的用途,例如通用寄存器用于存储临时数据,而指令寄存器则用于存储当前要执行的指令。

3. 标志寄存器:用于存储程序运行的状态信息,例如进位标志、零标志等。

根据标志寄存器的值,程序可以做出不同的决策。

三、汇编语言程序设计方法1. 程序结构:汇编语言程序由多个模块组成,其中包括数据段、代码段、堆栈段等。

数据段用于存储程序中定义的变量和常量,代码段用于存储程序的指令,堆栈段用于存储程序的运行环境。

2. 数据定义和赋值:在数据段中,可以定义各种类型的数据,并为其赋初值。

例如,可以定义一个字节类型的变量,然后给它赋一个初始值。

3. 程序流程控制:汇编语言中的程序流程控制结构有条件转移、无条件转移、循环等。

可以根据需要使用这些控制结构来控制程序的执行顺序。

4. 子程序调用:为了提高程序的可重用性,可以将一些功能相对独立的代码封装成子程序,并在需要的地方进行调用。

子程序的调用和返回可以通过栈来实现。

5. 输入和输出:汇编语言中提供了一些指令用于从外部设备读取数据或向外部设备输出数据。

可以根据需要使用这些指令来完成输入和输出操作。

四、汇编语言程序设计实例假设我们要写一个汇编语言程序,实现将两个数相加并输出结果的功能。

```assemblySECTION .datanumber1 db 10number2 db 20result db 0SECTION .textglobal _start_start:; 将number1加载到寄存器AL mov al, number1; 将number2加载到寄存器BL mov bl, number2; 将AL和BL相加add al, bl; 将相加的结果存储到result mov result, al; 输出结果mov eax, 4mov ebx, 1mov ecx, resultmov edx, 1int 0x80; 退出程序mov eax, 1xor ebx, ebxint 0x80```以上是一个简单的汇编语言程序,它将10和20相加,将结果输出到屏幕上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADD AX, OFFSET GDT ADC DX, 0 ;界限已在定义时设置好 MOV WORD PTR VGDTR.Base, AX MOV WORD PTR VGDTR.Base+2, DX MOV AX, CSEG ;设置代码段描述符 MUL BX MOV WORD PTR Code.BaseL, AX MOV BYTE PTR Code.BaseM, DL MOV BYTE PTR Code.BaseH, DH MOV AX, DSEG MUL BX MOV WORD PTR Data.BaseL, AX MOV BYTE PTR Data.BaseM, DL MOV BYTE PTR Data.BaseH, DH LGDT QWORD PTR VGDTR ;加载GDTR CLI ;关中断 EA20 ;打开地址线A20 MOV EAX, CR0 ;切换到保护方式 OR EAX, 1
11.1 保护模式编程基础
11.1.1 处理器类型伪指令
伪指令
.8086 .186 .286


只支持对8086指令的汇编 只支持对80186指令的汇编 支持对非特权的80286指令的汇编
.286P
.386 .386P .586
支持对80286所有指令的汇编
支持对80386非特权指令的汇编 支持对80386所有指令的汇编 支持对80586非特权指令的汇编
11.2 实模式与保护模式之间的切换
11.2.1 两种模式之间切换
1.从实模式切换到保护模式
首先,必须完成使GDTR指向该GDT。然后,由实模式切换到保 护模式原则上只要把控制寄存器CR0中的PE位置1即可,利用下面三 条指令完成对PE位的设置。 MOV EAX, CR0 OR EAX, 1 MOV CR0, EAX 在实际情况下,紧接着这三条指令,安排一条段间转移指令: JUMP16 Code_Sel, <OFFSET Virtual>
本章主要教学内容
1.保护模式下的各种伪指令; 2.实模式与保护模式的切换; 3.控制转移、中断和异常;
4.输入/输出保护、分页机制等。
本章主要教学目的及要求
1.理解保护模式下的各种伪指令及编程; 2.掌握实模式与保护模式的切换方法; 3.掌握中断和异常的相关概念、编程方法;
4.了解输入/输出保护和分页机制。
.586P
支持对80586所有指令的汇编
11.1.2 A20地址线的使用
为了访问地址在1M以上的存储单元,应先打开控制地址线A20的 “门”。这种设置与实模式下只使用最低端的1M字节存储空间有关, 与处理器是否工作在实模式或保护方式无关,即使在关闭地址线 A20时,也可进入保护模式。
代码
;打开A20: PUSH AX IN AL, 92H OR AL, 00000010B OUT 92H, AL POP AX ;关闭A20: PUSH AX IN AL, 92H AND AL, 11111101B OUT 92H, AL POP AX
公用过程----文件InitLDT.inc清单
;初始化LDT ;入口参数:FS:SI=第一个要初始化的描述符,CX=要初始化的 描述符数 InitLDT PROC MOV AX, WORD PTR FS:[SI].BaseL MOVZX EAX, AX SHL EAX, 4 SHLD EDX, EAX, 16 MOV WORD PTR FS:[SI].BaseL, AX MOV BYTE PTR FS:[SI].BaseM, DL MOV BYTE PTR FS:[SI].BaseH, DH ADD SI, SIZE Desc LOOP InitLDT RET InitLDT ENDP
公用过程----文件In PROC MOV MOV MUL MOV MOV RET InitIDT ENDP
BX, 16 AX, IDTSeg BX WORD PTR VIDTR.Base, AX WORD PTR VIDTR.Base+2, DX
DS AX, GDTSeg DS, AX CX, GDTNum SI, OFFSET EFFGDT AX, [SI].BaseL EAX, AX EAX, 4 EDX, EAX, 16 WORD PTR [SI].BaseL, AX BYTE PTR [SI].BaseM, DL BYTE PTR [SI].BaseH, DH SI, SIZE Desc Again DS BX, 16 AX, GDTSeg BX WORD PTR VGDTR.Base, AX WORD PTR VGDTR.Base+2, DX
2.从保护模式切换到实模式
从保护模式切换到实模式的过程类似于从实模式切换到保护模 式。原则上只要把控制寄存器CR0中的PE位清0即可。实际上,在此 之后也要安排一条段间转移指令,一方面清指令预取队列,另一方 面把实模式下代码段的段值送CS。这条段间转移指令在保护方式下 被预取并在实模式下被执行。
11.2.2 两种模式切换实例
11.1.3 头文件
头文件中,列举描述的数据结构比较全面,并不是在编写每个保护 模式下的汇编语言程序时全部用到的,如果一个程序没有使用某部分内
容可不引用。
公用过程----GDT初始化(InitGDT.inc)清单
;GDT初始化 InitGDT PROC PUSH MOV MOV MOV MOV Again: MOV MOVZX SHL SHLD MOV MOV MOV ADD LOOP POP MOV MOV MUL MOV MOV RET InitGDT ENDP
【例11-1】只有一个代码段的实模式和保护模式之间切换。 步骤: (1)切换前的准备工作; (2)切换到保护方式; (3)切换回实模式。 源程序如下:
;加载头文件386h.inc INCLUDE 386H.INC ;16位数据段 DSEG SEGMENT USE16 GDT LABEL BYTE ;全局描述符表 DUMMY S_DESC <> ;空描述符 Code S_DESC <0FFFFH,,,ATCE,,> Code_Sel = Code-GDT Data S_DESC <0FFFFH,0,11H,ATDW,,> Data_Sel = Datas-GDT GDTLen = $-GDT VGDTR PDesc <GDTLen-1,> DSEG ENDS ;16位代码段 CSEG SEGMENT USE16 'Real' ASSUME CS:CSEG, DS:DSEG Start PROC MOV AX, DSEG MOV DS, AX MOV BX, 16 MUL BX
相关文档
最新文档