微机原理及接口技术.doc_第1页
微机原理及接口技术.doc_第2页
微机原理及接口技术.doc_第3页
微机原理及接口技术.doc_第4页
微机原理及接口技术.doc_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编与接口技术课程实验指导书西北工业大学软件与微电子学院第一章 软件实模式实验部分这部分实验只涉及微机原理和汇编语言编程,应用的实验环境为源程序编辑环境、编译、连接和调试程序等。因为在实模式下的实现环境比较成熟,且容易理解,所以选择西安唐都科教仪器公司的Tddebug集成调试软件,或MASM5.0基于MS-DOS的环境。我们选择Tddebug集成调试软件。预备知识 Tddebug集成调试软件使用简要说明Tddebug集成调试软件。它具有较强的多窗口源语句调试功能。由于Tddebug是分步操作运行的,各步操作的详细说明或命令的语法结构可查阅相关资料,这里只就Tddebug的调试过程作以简要说明。在WINDOS系统下选择MSDOS图标指示的Tddebug.exe,点击,在DOS环境下运行进入Tddebug集成操作软件平台,按键Alt-E,EDIT编辑提示信息,首先给出文件名,注意路径最好为D:/TANGDU/PITA/32子目录下,此时文件名的后缀必须是“.ASM”,给出文件名后。就可对汇编语言源程序进行编辑了,其编辑环境与WINDOWS环境下的EDIT软件没什么两样。接着就是汇编、连接和调试了。1编辑源程序 :按键Alt-E ,(EDIT 文件名ASM ) 说明:教科书中的伪指令STARTUP用下列两条指令代替 MOV AX,DATA MOV DS,AX 伪指令EXIT 用DOS的21H号功能调用代替 MOV AH,4CH INT 21H2汇编源程序 :按键Alt-C 选择菜单Compile的编译项 对带ASM扩展名的汇编语言源程序进行汇编,生成目标文件OBJ。若汇编结果出错,继续步骤l,否则继续步骤33连接 :按键Alt-C,子菜单移至 LINK项,对第二步生成的目标文件OBJ 进行连接,成功则产生“.EXE”文件。如果几经修改,则第二、三步可选Alt-C子菜单下的ALL BUILD项,“*.OBJ”和“*.EXE”可一次性建立完成。4调试程序 :按键Alt-R 使用Rmrun菜单中的Run运行程序,观察运行结果。5使用Rmrun菜单中的Debug调试程序,观察调试过程中各个指令执行后CPU各寄存器的数据内容。各个命令参考Tddebug调试命令表。6按键Alt- Q-退出Tddebug集成操作软件平台。 表1 Tddebug调试命令表 命令内容 格 式 命令说明Load filel filename装载可执行程序Reload fdereload重新装载当前调试程序TraceTseg:offset单步执行一条指令StepP=seg:offset)单句执行一条指令GoG=seg:offset执行程序Go breakgb=seg:offset断点执行程序Set breakpointb设置断点List breakpoint tableb1列断点表 Clear breakpointBc number(O,1,2,3)清除断点UnassembleUseg:offset反汇编Dumpdseg:offset显示存储单元内容Entere(seg:offset修改存储单元Registerrregname显示/修改寄存器内容PeekPeek type(b,w,d)phys_add从物理地址取数据(字节、字、双字)Pokepoketypo(b,w,d)phys_add value 向物理地址写数据(字节、字、双字)Cpucpu显示系统寄存器GDTgdt显示全局描述符表IDTidt显示中断描述符表LDTldt显示局部描述符表TSSTss显示任务状态段Quitq退出调试状态实验部分实验一 显示和数据传送程序实验一实验目的1熟悉Tddebug集成操作软件环境下建立、汇编、链接、调试和运行汇编语言程序的全过程。2掌握在PC机上以十六进制数形式显示数据的方法。3掌握部分DOS功能调用的使用方法。4掌握汇编语言程序结构中数据段、堆栈段、代码段的定义方法及内存分配。5学会Tddebug调试程序主要命令的使用方法。 二实验内容1.将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。2.将数据段中的一个字符传送到附加段中,并输出附加段中的目标字符串到屏幕上。三实验预习内容一般来说,有许多程序需要显示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验将指定数据区的数据以16进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。1输出单字符调用号:02, 入口参数:DL 功能:将DL的内容显示(DL = 待输出字符的ASII码) MOV DL ,A MOV AH,02 INT 21H 程序执行后,在显示器上显示字符 A2输出字符串 调用号:09H, 入口参数:DS:DX(缓冲区首地址) 功能:将缓冲区内以&结尾的字串显示,&(24H)不显示。 BUF DB ABCDEF& MOV DX , OFFSET BUF MOV AH , 09H INT 21H执行结果在显示器上显示 ABCDEF3在计算机中,各种数据都是以0、1码的形式存储在存储器中,显示出来后往往已经由相应的软件做了加工,变成了人们希望的形式。存储器是以字节组织在一起的存储器堆,每一个字节由8位二进制数组成,一个十六进制位可对应四个二进制位的16个编码,所以关于二进制转换为十六进制,可以对应四位二进制进行处理,当然得注意高低四位的区分。4关于显示,屏幕上出现的应该是可见字符或图形,数字0000转换成十六进制也就是0,屏幕上显示为“0”,即计算机内部输出到屏幕接口寄存器一个关于0的ASCII码“30H”即可。四设计程序参考程序流程和清单程序清单1取字节的高4位数据A?转换成ASCII码是AF,加7H送屏幕显示取字节的低4位数据A?转换成ASCII码是AF,加7H送屏幕显示结束退出图1-1 显示程序实验流程图1N N DATA SEGMENTMESDB Show a as hex:,0AH,0DH,$SDDB aDATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTARTMOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09HINT 21HMOV DI,OFFSET SDMOV AL,DS:DIAND AL,0F0HSHR AL,4CMP AL,0AHJB C2ADD AL,07HC2:ADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AL,DS:DIAND AL,0FHCMP AL,0AHJB C3ADD AL,07H C3: ADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AX,4C00HINT 21HCODEENDSEND START五实验环境及设备清单PC机一台。六、实验步骤 / 操作指导1 运行Tddebug软件,按菜单逐步操作,将自己设计的源程序输入,处理,调试,修改,运行,直至结果与预设计相吻合。例如:将“A”的ASCII码送屏幕显示。查表得“A”的ASCII码是:41H,对应得二进制是:0100 0001B,经转换应在屏幕上显示41H,转换过程应该是将0100 0001B得高四位0100转换成4,再将4转换成4的ASCII码34H,通过2号功能调用送到屏幕上,显示为4;低四位0001转换成16进制为1,再转换成1的ASCII码31H,通过2号功能调用送到屏幕上,显示为1。2. 利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。3. 利用Rmrunt菜单中的Run运行程序,观察运行结果。4. 使用Rmrun菜单中的Debug调试程序,观察调试过程中数据传输指令执行后,各寄存器及数据区的内容5. 更改数据区中的数据,考察程序的正确性。七实验报告要求 1画出有关内容1、2的程序流程框图。2列出从进入Tddebug集成环境到完成一个实验内容操作的详细步骤及在内存中看到的实验数据和结果。3写出程序清单1、2,作出相应的注释。4写出实验中遇到的问题,以及你的对策或解决方法。八实验思考题1编写源程序为什么要有指令和伪指令?2数据传送指令有多种形式,那种指令可隐含指示传送的源在数据段,目标在附加段?3什么是初始化?编程为什么要初始化?4能不能给段寄存器进行立即数方式赋值,为什么?5. 若BP=1500H,SI=2500H,DS=2000H,ES=3000H,SS=4000H,假设按16位实模式操作,则指令MOV AL,BP+SI+4200H,其源操作数地寻址方式为_,访问内存的物理地址为_。 实验二 数码转换实验一实验目的练习各类数制的转换和代码的转换。二实验内容1将ASCII码表示的十进制数转换为二进制数2将十进制数的ASCII码转换为BCD码3将十六进制数的ASCII码转换为十进制数4将BCD码转换为二进制码三实验预习内容实验内容说明:计算机输入设备输入的信息一般是由ASC码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或用其他信息进行处理,处理的结果又必须依照外设的要求变为ASC码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机数码转换关系如图2所示,数码对应关系如表2所示。ASCII码二进制二进制BCD码ASCII码键盘光电机拨码开关数据开关CRT显示ASCII码ASCII码 主 机打印机多段显示位显示段码图2-1 计算机与外设间的数码转换关系十进制数可以表示为:其中Di代表十进制数l、2、3、9、0 从十进制数的最高位开始做乘10加次位的操作,依次类推,则可求出二进制的结果。本实验要求将缓冲区中的一个5位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。2将十进制数的ASCH码转换为BCD码本实验要求将键盘输入的一个5位十进制数54321的ASC码存放在数据区中,转换为BCD码后,将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASC码,则输出“FF”。提示:一字节ASCH码取其低4位即变为BCD码。3将十六进制数的ASCII码转换为十进制数 十六位二进制数的值域为065535,最大可转换为5位十进制数。五位十进制数可表示为:ND=D4104D3103D2102+Dll0Do 因此,将十六位二进制数转换为5位ASCII码表示的十进制数,就是求D1D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示 在屏幕上。4BCD码转换为二进制码 本实验要求将4个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数 码存入其后的内存单元中,转换结束,送屏幕显示。 表2-1 数码转换对应关系十六进制数BCD码二进制机器码ASC码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H126DH60110011036H02H7DH70111011137H78H0781000100038H00H7FH91001100l39H1867HA101041H08H77HB101142H03H7CHC110043H4639HD110144H21H5EHE111045H06H79HF111146H0EH71H四实验环境及设备清单PC机一台。五设计实验程序;参考程序流程 图2-3 将ASCII码表示的十进制数转换为二进制数图2-2 十进制ASCII码转换为二进制数六. 实验步骤 / 操作指导1 运行Tddebug软件,按菜单逐步操作,利用Edit菜单将自己设计的源程序输入计算机。2. 利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。3. 利用Rmrunt菜单中的Run运行程序,观察运行结果。4. 使用Rmrun菜单中的Debug调试程序,观察调试过程中数据传输指令执行后,各寄存器及数据区的内容5. 更改数据区中的数据,考察程序的正确性。七实验报告要求1画出有关内容3、4的程序流程框图。2列出从进入Tddebug集成环境到完成一个实验内容操作的详细步骤及在内存中看到的实验数据和结果。3写出程序清单3、4,作出相应的注释。4写出实验中遇到的问题,以及你的对策或解决方法。八实验思考题1为什么用C语言编程时就没有感到要进行数据转换后才能输出,而编写汇编语言程序却需要进行输出转换?2二进制和十六进制之间存在着自然组合关系,怎么转换?3要屏幕上可见,为什么要借用2号功能调用输出对应的ASCII码?4. 8086CPU支持处理的数据宽度有_ A. 8位 B. 16位 C. 64位 D. 1位5常用的数码转换有几种?实验三 运算类程序和分支程序设计实验一实验目的1. 掌握运算类指令编程及调试方法。2. 掌握运算类指令对各状态标志位的影响及测试方浊3掌握分支程序的设计方法4掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。5学会Tddebug调试程序主要命令的使用方法。 二实验内容1. 计算两个数的加减乘除后的结果,并输出到屏幕上。2. 求无符号字节序列中的最大值和最小值。三实验预习内容80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对二进制带符号和无符号的数据、组合BCD码、非组合BCD码类型进行算术运算。当然,程序有顺序、循环、分支和子程序四种结构形式,分支结构的实现一般依赖与CPU指令系统中的条件转移指令。1. 二进制双精度加法运算本实验要求计算X+Y=Z,并将结果Z输出到屏幕,其中X=001565AOHY=0021879EH。实验利用累加器AX,先求低16位和,并存入低地址存储单元,肝求高16位和,再存入高地址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=l,高位字相加时同时加上CF中的l。在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。2. 十进制数的BCD码减法运算 本实验要求计算XYZ,其中,X、Y、Z为BCD码,X=0400H,Y=0102H注意BCD码运算的宽度和调整对象,组合BCD码,运算宽度为字节型,调整对象为AL;非组合BCD码,运算宽度为半字节型,而且是针对字节型数据的低半字节,调整对象为AL;3乘法运算本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后将乘积显示在屏幕上。4用减奇数实现开平方运算80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N2 。即 135932。 13571642 13+5791113156482若要做s的开方运算,就可以从S中逐次减去自然数中的奇数1,3,5,7,一直进行到被减数为0或被减数不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。5本实验要求通过求无符号字节序列中的最大值和最小值来反映其结构形式实验可以使用BH和BL作为暂存现行的最大值和最小值,且在程序的初始将BH和BL初始化为首字节的内存,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH和BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。当循环结束操作时,将BH和BL分别送屏幕显示。四实验环境及设备清单PC机一台。五、实验步骤 / 操作指导1 运行Tddebug软件,按菜单逐步操作,利用Edit菜单将自己设计的源程序输入计算机。2. 利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。3. 利用Rmrunt菜单中的Run运行程序,观察运行结果。NNNCX 字节个数CX0?SI=SI+1,AL=SIBHSI,BL=SICX=CX-1送屏幕显示结束退出ALBL?CX0?BH=ALBL=AL4. 使用Rmrun菜单中的Debug调试程序,观察调试过程中数据传输指令执行后,各寄存器及数据区的内容5. 更改数据区中的数据,考察程序的正确性。六设计实验程序流程和程序参考流程:如图3-1所示Y 图3-1 分支程序实验流程图七实验报告要求 1画出有关内容的程序流程框图。2列出从进入Tddebug集成环境到完成一个实验内容操作的详细步骤及在内存中看到的实验数据和结果。3写出程序清单,作出相应的注释。4写出实验中遇到的问题,以及你的对策或解决方法。八实验思考题1为什么说计算机既能进行二进制运算又能进行十进制运算?2. 什么运算指令只能进行字节处理,什么运算指令中的参数可以是字节、字、双字等?3.计算机中常用的BCD码 A.是二进制数 B.是十六进制数 C.是二进制编码的十进制数 D.是不带符号数的二进制形式4. 实现将AL寄存器中的低4位置1的指令为_ A.AND AL,0FH B.OR AL,0FH C.TEST AL,0FH D.XOR AL,0FH5DAA、AAA和AAM的区别是什么? 实验四 循环程序设计和子程序设计实验一实验目的1掌握循环程序的设计方法。2. 掌握子程序的定义调用方法3掌握汇编语言程序结构中数据段、堆栈段、代码段的定义方法及内存分配。4. 掌握系统功能调用程序的使用和编写方法。 二实验内容1.统计某数据区内负数的个数。2.将指定数据区的数据搬移到另一个数据区。3.排序实验。 三实验预习内容1统计内负数的个数实验本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累由加起来,即得到区内所包含负数的个数。循环程序设计分为设置循环初始状态、循环体、循环控制条件三部分(1) 设置初始部分:设置循环次数,地址指针或其它初始状态。(2) 循环体:包括工作部分和修改部分。(3) 控制部分:控制循环次数。循环结构分为单循环和多重循环。 控制方式有多种: 计数控制:事先已知循环次数,每次循环加或减计数,并判定总次数以达到控制循环。 条件控制:事先不知循环次数,在循环时判定某种条件的真假达到控制循环。 状态控制:事先设定二进制位的状态,或由外界干予,测试开关状态,决定循环。例. (循环控制举例)编程序统计 AX 寄存器中 1 的个数。 (采用 AX = 0?做为循环的条件) CODE SEGMENT ASSUME CS:CODESTART: MOV CX , 0 ;存 1 的个数 AGAIN: TEST AX , 0FFFFH JZ B SAL AX , 1 JNC A INC CX A: JMP AGAIN B: MOV AH ,4CH INT 21H CODE ENDS END START数据移动实验本实验要求将指定数据区的数据搬到另一个数据区,并通过子程序调用的方法,将搬移的数据显示在屏幕上。通用的数据移动子程序:调用条件:(1)BUF1和BUF2同在一数据段中; (2)调用前DS:SI指向源数据块;(3)调用前DS:SI指向源数据块;(4)CX为移动块长度(LEN);(5)DF0参考MOVE子程序:MOVEPROCCMP SI,DIJA A2ADD DI,CXADD SI,CXDEC SIDEC DISTDA2:REP MOVSBRETMOVEENDP在汇编程序设计中,用户通常会将常用的具有特定功能的程序段编制成子程序使用。一般过程定义伪操作的格式如下:procedure name PROC Attribute:procedure nameENDP其中Attribute是指类型属性,可以是NEAR或FAR,调用程序和过程在同一个代码段中使用NEAR属性,不在同一个代码段中则使用FAR属性。对于两个数据块分离的情况,数据的传送从数据块的首地址开始,或者从数据块的末地址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏。所以搬移过程可以通过以下两个方式完成:当源数据块首地址目标块旨地址时,从数据块的首地址开始传送数据;当源数据块首地址目标块首地址时,从数据块的末地址开始传送数据。例. (子程序举例)做十进制加法 44332211+88776655DATA SEGMENT A DB 11H,22H,33H,44H,00H B DB 55H,66H,77H,88H,00H SUM DB 20 DUP (?)DATA ENDSSTACK SEGMENT STA DB 20 DUP (?) TOP EQU LENGTH STASTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX ,DATA MOV DS ,AXMOV ES ,AX AAB PROC NEAR MOV AX ,STACK LODSB MOV SS ,AX ADC AL ,BX MOV SP ,TOP DAA MOV SI ,OFFSET A STOSB MOV DI ,OFFSET SUM INC BX MOV BX ,OFFSET B RET MOV CX ,05 AAB ENDP CLD CODE ENDS CLC END STARTADITI: CALL AAB LOOP ADITI MOV AH ,4CH INT 21H 3排序实验 本实验要求编写一个程序,对存储区中的一组双字进行排序,并将排序结果显示在屏幕上。在编写过程中,应使用32位寄存器,并目采用基址+变址+偏移的寻址方式。在程序中使用80x86指令系统中有关32位的指令、寻址方式及32位寄存器时需要在文件头使用“386”或“386p”。四实验环境及设备清单PC机一台。五、实验步骤 / 操作指导1运行Tddebug软件,选择Edit菜单编写实验程序。对于数据移动提供16字节的数据:11H,22H,33H44H55H,66H,77H,88H,99H,OAAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H。2使用Compile菜单中的Compile和Link对实验程序进j汇编、连接。3使用RInDIB菜单中的Run运行程序,查询数据传输的正确性。4更改数据区中的数据,考察程序的正确性。六实验报告要求 1画出有关内容的程序流程框图。2列出从进入Tddebug集成环境到完成一个实验内容操作的详细步骤及在内存中看到的实验数据和结果。3写出程序清单作出相应的注释。4写出实验中遇到的问题,以及你的对策或解决方法。七实验思考题1编写源程序为什么要有指令和伪指令?2数据传送指令有多种形式,那种指令可隐含指示传送的源在数据段,目标在附加段? 3.指令LOOPZ/LOOPE是结果_或_发生转移的指令;而指令LOOPNZ/LOOPNE则是结果_或_发生转移的指令。4. 串操作指令中的REP前缀与循环控制有什么关系?5汇编程序设计的循环能否象C语言中的FOR可以提前退出?第二章 32位微机保护模式原理实验32位微处理器有两种工作模式:实地址模式和保护模式。在保护模式下,微处理器从硬件上支持了虚拟存储管理和多任务中断,异常处理等,从而使学生全面掌握32微处理器在保护模式下的工作原理。保护模式下的分段存储管理机制为了对存储器中的程序及数据实现保护、共享和对虚拟存储器的管理,32位微处理器在硬件上提供了支持。在保护模式下,32位微处理器不仅采用了扩充的存储器分段管理机制,而且还提供了可选的存储器分页管理机制。1虚拟存储器在实模式下,CPU的可寻址范围只有1 MB的物理地址空间。而在保护模式下,CPU可寻址的物理地址空间达到了4GB。4GB可谓很大,但实际的微机系统不可能安装如此大的物理内存。为了能够运行大型程序,并真正地实现多任务,必须采用虚拟存储器。虚拟存储器是一种软硬件结合的技术,用于提供比计算机系统中实际可用的物理主存储器大得多的虚拟存储器空间,这样程序员在编写程序时就不用考虑计算机中物理存储器的实际容量。2地址转换在保护模式下,虚拟存储器由大小可变的存储块构成,将这样的块称为段。每个段都由一个8字节长的数据来描述,描述的内容包括了段的位置、大小和使用情况等,这个8字节的数据称为描述符。在保护模式下,虚拟存储器的地址是由指示描述符的选择子和段内偏移两部分构成,所有的虚拟存储器地址构成了虚拟地址空间,且虚拟地址空间可以达到64TB。由于程序只有在物理存储器中才能够运行,所以虚拟地址空间必须映射到物理地址空间,即二维的虚拟地址必须转换成一维的物理地址。存保护模式下,每个任务都拥有一个虚拟地址空间,为了避免多个并行任务的多个虚拟地址空间映射到同一个物理地址空间,32位处理器采用线性地址空间来隔离虚拟地址空间和物理地址空问。3分段管理的概念在保护模式下,分段管理机制实现了虚拟地址空间到线性地址空问的映射,也就是将二维地址转换成一维地址。这一步总是存在的,且由CPU中的分段部件自动完成。(1)保护模式下段的定义在保护模式下,每个段的描述符由三个参数构成:段基地址(BaseAddress)、段界限(Limlt)和段属性(Attributes)。1) 段基地址段基地址规定了线性地址空间中段的开始,长32位。由于段基地址和寻址的长度相同,所以任意一个段都可以从32位线性地址空间中的任意一字节处开始。2)段界限段界限规定了段的大小。在保护模式下,段界限用20位表示,其单位可以是l字节也可以是4KB。当单位为l字节时,段界限最大长度为220=lMB;当为4KB时,段界限的最大长度为4GB。3)段属性段属性规定了段的主要特性。在对段进行各种访问时,对访问的合法性检查主要依据段属性的定义。(2) 段描述符在保护模式下,每个段都由一个相应的描述符来描述。根据描述的对象来划分描述符可以划分成三种:存储段描述符、系统段描述符和门描述符。1)存储段描述符存储段描述符的格式如下: 76 5 4 3 2 1 0Base(3124)Attributes/Limit(1916)Base(230)Limit(150) 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 GD0AVLLimit(1916)PDPLDT1G:段界限粒度位,指示段界限的单位是l字节还是4KB(01)。D:简单来说就是决定段是32位的还是16位的(1/0)。AVL:软件可利用位(未规定)。P:表示描述符对地址转换是有效的(1/0)。DPL:两位.决定了描述符对应的特权级,用于特权级检查,以决定是否能对该段进行访问。 DT:表示段的类型(描述对象),为1,表示是1存储段。 TYPE:决定丁存储段的属性。具体属性值见下表5-1。表5-1 存储段属性值类型说明类型说明0只读8只执行1只读,已访问9只执行,已访问2读/写10读,执行3读/写已访问11读/执行,己访问4只读,向低扩展12只执行,一致码段5只读,向低扩展,已访问13只执行,一致码段,已访问6读/写,向低扩展14读/执行, 一致码段7读/写,向低扩展,已访问15读/执行,一致码段,已访问2) 系统段描述符和门描述符系统段是实现存储管理机制所使用的特殊段,用于描述系统段的描述符称为系统段描述符。32位处理器中含有两种系统段:任务状态段和局部描述符表段。门描述符并不是描述某种内存段,而是描述控制转移的入口点。这种描述符好比一个通向另一个码段的门,通过这种门,可以实现任务内特权级的变换和任务间的切换。门描述符可以分为四种:任务门、调用门、中断门和陷阱门。(3)描述符表为了方便管理,32位处理器把描述符组织成线性表进行管理,这样的表称为描述符表。32位处理器共支持三种描述符表:全局描述符表GDT(Global Descriptor Table)、局部描述符表LDT(Local Descriptor Table)和中断描述符表IDT(Interrupt Descriptor Table)。1)全局描述符表(GDTl)全局描述符表GDT中包含了每个任务都可能访问的段描述符,通常包含描述操作系统及各个任务公共使用的代码段、数据段和堆栈段描述符,还包含了各个任务的TSS段描述符、LDT所在段描述符以及各种调用门和任务门描述符。一个32位微处理器系统中有且只有一张GDT,且第于个描述符是一个空描述符(所有值为“0”),GDT在内存中的位置由GDTR全局描述符表寄存器来定位,它最多可以容纳8192个描述符。2)局部描述符表(LDT)LDT中包含了每个任务自己的代码段、数据段、堆栈段描述符以及任务内使用的门描述符。3)中断描述符表(IDT)在32位微处理器响应中断,异常处理时,需要通过查询IDT定位处理程序所在的段及偏移。,IDT中包含了中断门、陷阱门和任务门描述符,且最多包含256个。在整个32位处理器系统中,只允许有一张IDT。(4)段选择子在实模式下,逻辑地址空间中存储单元的地址由段地址和段偏移构成。在保护模式下,虚拟地址空间中的存储器单元地址由段选择子和段偏移构成。段选择子用来在描述符表中查找相应的段描述符。153210描述符索引TI RPL段选择子长16位,其中高13位包含了一个指向描述符的索引值,该索引值可以确定选择子对应的描述符在GDT或LDT中的哪一项。Tl位指示了选择子对应的描述符在GDT还是往LDT:为l,表示在LDT中;为O,表示在GDT中。RPL表明了选择子的请求特权级,用于特权级检查。(5)段描述符高速缓冲寄存器在保护模式下,段寄存器中装载的是段选择子,在访问存储器形成线性地址时。处理器需要使用选择子定位段的基地址等信息。为了避免在每次存储器访问时,都要访问描述表来取得段信息,32位微处理器为每个段寄存器都配备了一个高速缓冲寄存器,这些寄存器称之为段描述符高速缓冲寄存器。每当把一个选择子装入某个段寄荐器时,处理器自动从描述表中取出相应的描述符,把描述符中的信息保存到对应的高速缓冲寄存器中,且在以后对该段访问时,都从高速缓冲寄存器中取得段的信息。这部分内容对程序员不可见。实验五 全局描述符表实验一实验目的1熟悉保护模式的编程格式。2掌握描述符的声明方法。3掌握使用选择符访问段的寻址方法。4掌握部分DOS功能调用的使用方法。5掌握汇编语言程序结构中数据段、堆栈段、代码段的定义方法及内存分配。6学会Tddebug调试程序主要命令的使用方法。 二实验内容实现在一个0级代码段中将源数据段中的一段数据复制到目标数据段中,其中所有段的段描述符均放置在GDT中。三实验预习内容全局描述符表实验本实验要求实现在一个O级代码段中将源数据段中的一段数据复制到目标数据段中。其中所有段的段描述符均放置在GDT中。实验分析为了实现在O级代码段中完成数据传输,实验程序中需要安排一个0级代码段和两个O级数据段(可以是03级任一级别的数据段)。在程序开始声明一个数据段“DSEG”来描述这三个段的描述符,其中有代码段描述符Scode、源数据段描述符Datas和目标数据段描述符DataD,将它们相应的选择子分别定义为Scode_Sel、DataS_Sel和DataD_sel。按照实验程序编写格式的约定及描述符的格式定义,为这三个段分别定义描述符:(1)代码段描述符:Scode Desc(2)源数据段描述符:Datas Desc (3)目标数据段描述符:DataD Desc 为了给装入程序提供重定位信息,三个存储段描述符中地址的低16位用每个描述符对应段的标号来填写。在程序装入内存时,调试系统会根据地址的低16位重定位该段对应的真实物理地址,并将该地址写入描述符中(系统没有使用分页机制线性地址等价于物理地址)。在实验中可查询GDT来确定每个段的真实物理地址。在程序定义过程中,首先使用一个全“F”的描述符作为定义的开始,然后定义代码段描述符Scode、源数据段的描述符DSEGl和目标数据段描述符DSEG2。为了区分LDT和GDT的定义再使用一个全“F”的描述符作为界限。由于本实验中不使用LDT,则再使用一个全“F”的描述符结束描述符的声明。本程序可实现将一个数据段中数据搬移到另一个数据段的过程。传输过程中可使用DS和ES两个段寄存器,其中DS装入源数据段的选择符DataS_Sel, ES装入目标数据段的选择符DataD_Sel,在实验程序的最后使用“INT 0FFH”指令,正常结束程序的运行。 四实验环境及设备清单1PC机一台2TD PIT系列教学实验系统一套。五、操作指导/ 实验步骤操作指导:1打开实验箱,电源PUT_ON,右上方的红色开关(指示灯亮)2开主机,点按F8键,程序开机提示菜单后,选择:Command only prompty3. 进入纯DOS状态,出现C: 4 换到D:盘5路径设置位D:TANGDUPITA326启动TDDEBUG7出现与前几次实验相同的界面8开始写源程序实验步骤1 运行Tddebug软件,按菜单逐步操作,利用Edit菜单将自己设计的源程序输入计算机。2. 利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。3使用Pmrun装入实验程序。4给出可执行程序,装入。5根据提示选择COM1口串行接入,如果装入成功,屏幕上会显示“Load OK!”,否则,出现相应的错误提示信息,重复启动实验台。6若程序成功装入,可以使用R命令查看调试系统为实验程序分配的系统资源。7使用GDT命令查询系统的GDT,并且查看验程序中声明的代码段、数据段描述符在GDT中的位置以及对应段的物理地址、段属性和段界限等。8使用G 0008:0000运行程序(或按F9键),如果程序正常结束,命令显示区中将显示“Correct Running”。9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论