微机原理与接口技术课后习题问题详解

上传人:沈*** 文档编号:100840382 上传时间:2022-06-03 格式:DOC 页数:93 大小:581.50KB
收藏 版权申诉 举报 下载
微机原理与接口技术课后习题问题详解_第1页
第1页 / 共93页
微机原理与接口技术课后习题问题详解_第2页
第2页 / 共93页
微机原理与接口技术课后习题问题详解_第3页
第3页 / 共93页
资源描述:

《微机原理与接口技术课后习题问题详解》由会员分享,可在线阅读,更多相关《微机原理与接口技术课后习题问题详解(93页珍藏版)》请在装配图网上搜索。

1、word.252. 将如下二进制数、十六进制数转换成十进制数。3. 写出如下十进制数的原码、反码和补码用8位二进制。1+65 2-65 3+115 4-1154. 写出如下用补码表示的二进制数的真值即十进制数。101101110 201011001 310001101 4111110015. 当前计算机的体系结构由哪五局部组成?6. 试述微型计算机的一般结构。7. Intel8088在功能上可以分为哪两大局部?各有什么功能?8. 试述Intel8088所采用的取指令与执行指令重叠技术的原理与好处。9. 为什么说Intel8088是准16位的微处理器芯片?10.Intel8088的通用存放器有哪

2、些?那些存放器可拆分为上下字节两局部使用?11.Intel8088对存储器的寻址围是多少?为什么?12.为什么Intel8088的存储器地址空间要分段?请说明其物理地址的形成过程。参考答案:3. 101000001B,01000001B,01000001B 211000001B,10111110B,10111111B 301110011B,01110011B,01110011B 411110011B,10001100B,10001101B4. 1+110D 2+89D 3-115D 4-7D5. 当前计算机的体系结构由运算器、控制器、存储器、输入设备和输出设备组成,称为.诺依曼体系结构。6.

3、微型计算机的一般结构可表示为微型计算机微处理器控制器运算器存放器组内部存储器输入/输出接口7. 略。8. 略。9. Intel 8088微处理器的部体系结构是16位,与外部通信采用8位数据总线,因此也称为准16位微处理器。10.略。11.Intel8088芯片的地址引脚有20个,对存储器的寻址围为 220=1MB。12. 8088有20根地址线,它的直接寻址围为220 = 1MBByte,字节。所以在以8088组成的微机系统中,可以有1MB的部存储器。而8088中的存放器都是16位的,所以16位的存放器只能给出来16位的地址,寻址空间只能在64KB的围。因此,在8088系统中,将1MB的存分成

4、假设干个段,一个段最大64KB,最小16B16个字节定义成一个小节,最多可有64K个段,最少16个段。段与段之间可以局部重叠,也可以完全重叠。物理地址的形成过程可由下式表示: 物理地址=段存放器的容10H+有效地址EA第二章 8088的寻址方式与指令系统本章的主要容是8086/8088的寻址方式,以与常用指令的格式和功能。2.1 难点与重点本章的学习重点是存储空间的分段管理;堆栈的结构与操作的规如此;与数据有关的七种寻址方式、与转移地址有关的四种寻址方式;常用指令的格式和功能,与其对CF、OF、SF、ZF标志的影响。主要掌握的知识点是寻址方式与指令系统。 指令的一般格式操作码 操作码1操作码规

5、定了指令的操作性质,用助记符表示;操作数规定了指令的操作对象。 2指令可分为无操作数指令、单操作数指令、双操作数指令依次为目的操作数、源操作数等。3操作数类型有三种:立即数出现在指令中的常数; 存放器操作数操作数在存放器中; 存储器操作数操作数在存储器中。4在双操作数指令中,目的操作数和源操作数的类型必须一致,即字节对应字节,字对应字;两个操作数不能同时使用存储器寻址方式,除源操作数为立即寻址方式外,两个操作数中其中一个必为存放器寻址方式;目的操作数不允许使用立即寻址方式,即不允许出现立即数。2.1.2 存储空间的分段管理(见第一章习题12参考答案) 堆栈的结构与操作的规如此堆栈是按先进后出的

6、的原如此在存中组织的一个存储区域。该区域一端固定一端活动,固定端称为栈底,而活动端称为栈顶。8086/8088系统中,堆栈位于堆栈段,段地址由SS指示,SP作为指针,始终指向栈顶所在存储单元。堆栈有两个根本操作:PUSH进栈和POP出栈,只能作字操作。PUSH操作使栈顶向低地址方向移动,而POP操作如此刚好相反。当前栈顶为空时,栈顶和栈底指向同一存单元。2.1.4 8088寻址方式这局部寻址方式有立即寻址方式、存放器寻址方式、直接寻址方式、存放器间接寻址方式、存放器相对寻址方式、基址变址寻址方式、相对基址变址寻址方式。注意:以上除了立即寻址和存放器寻址两种方式,其他寻址方式可以归结为存储器寻址

7、方式一,允许段跨越,以便取得存储器中其它段中的数据。这种寻址方式用来确定转移指令与子程序调用指令的转向地址,分为段直接寻址方式、段间接寻址方式、段间直接寻址方式、段间间接寻址方式。2.2 例题解析1指出如下指令的错误:1MOV AH, BX 2MOV SI, BX 3MOV AX, SIDI4MOV AX, BXBP 5MOV BX,ES:AX 6MOV BYTE PTRBX, 1000解:1源操作数和目的操作数的类型不匹配,即字长不一致。必须字节对字节,字对字。2源操作数和目的操作数不能同时为存贮器寻址方式。3基址变址方式没有SI和DI的组合。因为SI和DI都变址存放器。4BX和BP作为基址

8、存放器不允许组合使用。5AX为16位通用数据存放器,ES:为段跨越前缀,指明存储器的所在段,ES:AX为非法。6源操作数和目的操作数的类型不匹配,1000超出一个字节的表示围,而BYTE PTRBX表示字节存储器。2(DS)=3000H,(SS)=3001H,(BX)=100H,(BP)=0F3H,(SI)=2,存单元的值如下列图,求如下指令执行后AX的值。30100H30101H30102H30103H30104H30105H30106H30107H12H34H05H06H1AH10H7CHOBH1MOV AX, 1200H 2MOV AX, BX3MOV AX, 100H 4MOV AX,

9、 BX5MOV AX, 2BX 6MOV AX, BXSI7MOV AX, BPSI 8MOV AX, DS:11HBPSI9MOV AX, 4HBXSI解:1(AX) = 1200H 立即寻址2(AX) = 0100H 存放器寻址3(AX) = 3412H 直接寻址 源操作数物理地址 = (DS 10H + 100H = 30100H4(AX) = 3412H 存放器间接寻址 源操作数物理地址 =DS 10H +BX= 30100H5(AX) = 0605H 存放器相对寻址 源操作数物理地址 =DS 10H +BX+ 2H = 30102H6(AX) = 0605H 基址变址寻址 源操作数物

10、理地址 =DS 10H +BX+SI= 30102H7(AX) = 7C10H 基址变址寻址 源操作数物理地址 =SS 10H +BP+SI= 30105H8(AX) = 0B7CH 相对基址变址寻址段超越源操作数物理地址 =DS 10H +BP+SI+ 11H = 30106H9(AX) = 0B7CH 相对基址变址寻址源操作数物理地址 =DS 10H +BX+SI+ 4H = 30106H3指出如下程序中用(.)指定的指令执行后AX、DX、CF的值,以与该程序段的功能。MOV AX,7856HMOV DX,8234HADD AX,8998H 1ADC DX,1234H 2SUB AX,44

11、91H 3SBB DX,8000H 4解:1AX=01EEH,CF=12DX=9469H,CF=03AX=BD5DH,CF=14DX=1468H,CF=0功能:作双字的加减法运算,即DX:AX=8234 7856H + 1234 8998H - 8000 4491H = 1468 BD5DH,注意:在作高位字的运算时,要考虑进位和借位的情况,故应用ADC或SBB指令。4(DS)=1000H,(ES)=2000H,(BX)=200H,(SI)=10H,存单元的值如下列图。分别给出如下各条指令执行后BX、DS、ES的值。1000:0210H1000:0211H1000:0212H1000:0213

12、H00H41H02H03H1MOV BX, BXSI2LEA BX,BXSI3LDS BX,BXSI4LES BX,BXSI解:1(BX)=4100H,(DS)=1000H,(ES)=2000H2(BX)=0210H,(DS)=1000H,(ES)=2000H3(BX)=4100H,(DS)=0302H,(ES)=2000H4(BX)=4100H,(DS)=1000H,(ES)=0302H5给出如下程序实现的功能。PUSH AXPUSH BXPOP AXPOP BX解:交换AX和BX值。6给出如下指令执行后,AL、BL的值,以与标志位的值。MOV BL, 10101010BAND BL, 11

13、110110B 1OR BL, 00001001B 2XOR BL, 00001001B 3NOT BL 4解:1BL=10100010B。CF=OF=0,SF=1,ZF=0,PF=0,AND常用于复位某些位同0与,不影响其他位。2BL=10101011B。CF=OF=0,SF=1,ZF=0,PF=0,OR常用于置位某些位同1或,不影响其他位。3BL=10100010B。CF=OF=0,SF=1,ZF=0,PF=0,XOR常用于求反某些位同1异或,不影响其他位。4BL=01011101B。标志位不变。NOT作按位取反操作,不影响标志位。7编写程序段,用移位和加法实现将AL存放器中的无符号数乘1

14、0的功能。解:10a=23a+2a,程序段如下:XOR AH,AH ;实现(AH)=0,同时使CF=0SHL AX,1 ;(AX)2(AL)MOV BX,AX ;(BX)(AX)=2(AL)SHL AX,1 ;(AX)4(AL)SHL AX,1 ;(AX)8(AL)ADD AX,BX ;(AX)8(AL)2(AL)=10(AL)8对于AX中存放的无符号数,如果是偶数如此除以2,如果是奇数如此加1后除以2。解:下面提供判断奇偶数的两种方法1 TEST AX,01H ;测试AX的最低位不用AND指令,以免改变AXJZ EVEN ;标志ZF=1,即D0=0:AX是偶数,程序转移ADD AX,01H

15、;标志ZF=0,即D0=1:AX的奇数,加1EVEN: SHR AX,1 ;AXAX22 MOV BX,AX SHR BX,01H ;将AX的最低位D0移进CF JNC EVEN ;标志CF=0,即D0=0:AX是偶数,程序转移 ADD AX,01H ;标志CF=1,即D0=1:AX的奇数,加1EVEN: SHR AX,01H ;AXAX29用MOV和LOOP指令完成和如下指令一样的功能:REP MOVSBDF=0解:NEXT: MOV AL, SI MOV ES:DI, AL INC SI INC DILOOP NEXT10编写程序段,求1+2+100之和,并将结果存入AX中。解: XOR

16、AX, AXMOV CX, 100AGAIN: ADD AX, CX LOOP AGAIN2.3 习题与参考答案1. Intel8088的寻址方式有那几类?每一类又有那几种?2. Intel8088各种寻址方式是如何形成物理地址的?3. 段跨越前缀在指令中起什么作用?4. 在双操作数指令中目的操作数的寻址方式有什么限制?5. 在双操作数指令中目的操作数和源操作数的寻址方式有什么规定?6. 设当前数据段段地址存放器的容为1B00H,在数据段的偏移地址2000H单元中含有一个容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列。7. TABL

17、E为数据段中0032H单元的符号地址,其中存放的容为1234H,试问以下两条指令有什么区别?指令执行完后AX存放器的容是什么? MOV AX,TABLE LEA AX,TABLE 8. 知堆栈段段址存放器SS的容为0FFA0H,堆栈指针存放器的容为0080H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区和SP的容变化过程示意图标出存储单元的物理地址。9. 现有 DS=2000H,BX=0100H,SI=0002H,20100H=12H, 20101H=34H,20102H=56H,20103H=78H,21200H=2AH, 21201H=4CH

18、,21202H=B7H,21203H=65H试说明如下各条指令单独执行以后AX存放器的容。 (1) mov ax,1200h (2) mov ax,bx (3) mov ax,1200h (4) mov ax,bx (5) mov ax,1100hbx (6) mov ax,bxsi (7) mov ax,1100hbxsi10.写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数的单元地址。 1ZW +Z-X 2ZW-X+6-R+6 3Z(W*X)/(Y+6)的商 R(W*X)/(Y+6)的余 4Z(W-X)/5*Y)*211. 写出对存放在DX和AX中的双字长求补的指令

19、序列。12. 写出完成以下操作的程序段。假设各变量的值均为用压缩BCD码表示的二位十进制数。(1) UV+(S-6)(2) U(X+W)-(Z-V)13. 试写出将DX:AX双字右移4位的程序段。14. 设(DS)=2100H,(SS)=5200H,(BX)=1400H,(BP)=6200H,说明下面两条指令所进展的具体操作: MOV BYTE PTR BP,20H MOV WORD PTR BX,2000H15. 使用堆栈操作指令要注意什么问题?16.SS9000H,SP0E200H 如此整个堆栈段物理地址围为,栈顶的物理地址为。17. 下面这些指令中哪些是正确的?哪些是错误的?假设是错误的

20、,请说明原因。 1 XCHG CS,AX 2 MOV BX,1000H 3 XCHG BX,IP 4 PUSH CS 5 POP CS 6 IN BX,DX 7 MOV BYTE PTR BX,1000 8 MOV CS,1000H 9 ADD AX,SIDI 10SUB 56,AL18. 指令序列为:CMP AX,BXJ L1请在能引起转移到L1单元的条件转移指令下面划钩,AX、BX的容给定如下:AXBXJNBEJNBEJLJNLJLEJNLE1F521F5288C988C9FF82007E58BA020EFFC5FF8B09A01E978AEAFC29D36732A619. 假设在程序的括

21、号中分别填入指令1LOOP L20 2LOOPNE L20 3LOOPE L20试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个存放器的容分别是什么?请在如下表格的空档中填入正确的容。指令AXBXCXDXLOOP L20LOOPNE L20LOOPE L20BEGIN: MOV AX,01MOV BX,02MOV CX,03MOV DX,04L20: INC AXADD BX,AXSHR DX,1 参考答案:1.答:立即寻址方式存放器寻址方式 直接寻址方式与数据有关的寻址方式 存放器间接寻址方式存储器寻址方式 存放器相对寻址方式基址变址寻址方式8088寻址方式 基址变址相对寻址方

22、式段直接寻址方式段间接寻址方式与转移地址有关的寻址方式 段间直接寻址方式段间间接寻址方式2. 答:具体就是以数据有关的寻址方式的物理地址的形成方式。直接寻址方式:物理地址 =DS16D + EA存放器间接寻址方式:物理地址=(DS) 16D +BX|SI|DI 物理地址=SS16D +BP存放器相对寻址方式:物理地址=DS16D +BX|SI|DI+8位|16位位移量 物理地址=SS16D +BP+ 8位|16位位移量基址变址寻址方式:物理地址=DS16D +BX+SI|DI物理地址=SS16D +BP+SI|DI相对基址变址寻址方式:物理地址=DS16D +BX+SI|DI+ 8位|16位位

23、移量物理地址=SS16D +BP+SI|DI+ 8位|16位位移量3. 答:在指令中段跨越前缀允许CPU访问别的数据段的数据。4. 答:其限制有: 1两操作数不能同时使用存储器寻址方式;2除源操作数为立即寻址方式外,两操作数中至少一个为存放器寻址方式; 3目的操作数不能为立即数。5. 答:源操作数可使用所有寻址方式,目的操作数除立即寻址方式外其他寻址方式均可使用。另外要考虑第4题中所述的限制。6. 解: LDS SI,2000H MOV AX,SI7. 解:MOV AX,TABLE ;以TABLE为偏移地址的存单元的容送AX,指令执行完后,;AX= 1234HLEA AX,TABLE ;TAB

24、LE的偏移地址送AX,指令执行完后,AX= 0032H8. 解:SPFFA0:0080SPFFA0:007ESPFFA0:007C79HSPFFA0:007E79H0FH0FH57H57H57H80H80H80H初始状态 PUSH PUSH POP9.解:11200h20100h34c2ah43412h54c2ah67856h765b7h10. 解:1 MOV AX,Z SUB AX,X ADD AX,W MOV Z,AX 2 ADD X,6 ADD R,9 MOV AX,WSUB AX,X SUB AX,R MOV Z,AX 3 MOV AX,W IMUL X ADD Y,6 IDIV Y

25、MOV Z,AX MOV R,DX 4 假定运算过程中均不超过16位。MOV AX,W SUB AX,X CWD MOV BX,5 IDIV BX IMUL Y MOV BX,2 IMUL BXMOV Z,AX11. 解:NOT AX NOT DX ADD AX,1 ADC DX,012. 解:1 MOV AL,S SUB AL,6 DAS ADD AL,V DAA MOV U,AL 2 MOV AL,X ADD AL,W DAA MOV BL,AL MOV AL,Z SUB AL,V DAS XCHG AL,BL SUB AL,BL DAS MOV U,AL13. 解: MOV CL,4 另

26、解: mov cx,4 SHR AX,CL again: shr dx,1 MOV BL,DL rcr ax,1 SHR DX,CL loop again SHL BL,CL OR AH,BL14. 解:MOV BYTE PTR BP,20H ; 字节操作,20H(58200H),MOV WORD PTR BX,2000H ; 字操作,2000H(22400H),即; 00H(22400H),20H(22401H)15. 答:PUSH和POP堆栈操作指令中操作数为除立即寻址方式外的所有寻址方式,字操作。16. 解:90000H,9E1FFH,9E200H17. 解:1错。码段段址存放器CS不能

27、出现在指令中。 2错。双操作数指令中两操作数不能同为存储器寻址方式。 3错。IP是指令指针存放器 ,它的容是下一条要取出的指令的偏移地址,不能为用户所用,故不能出现在指令中。 45错。原因同1。 6错。IN为输入指令,不能使用BX,只能使用累加器AX或AL,承受端口上的数据信息。指令中DX存放16位端口地址。 7错。数据类型不匹配,“BYTE PTR BX指示目的操作数将存放在一个字节的存储器,源操作数为立即数1000为字数据。 8错。原因同1。 9错。SI和DI都是变址存放器,不能同时使用。 10错。双操作数指令中目的操作数不能为立即数。18.答:见表1表1 题18答案AXBXJNBEJNB

28、EJLJNLJLEJNLE1F521F5288C988C9FF82007E58BA020EFFC5FF8B09A01E978AEAFC29D36732A619.答:见表2表2 题19答案指令AXBXCXDXLOOP L200004H000BH0000H0000HLOOPNE L200004H000BH0000H0000HLOOPE L200002H0004H0002H0002H第三章 8088汇编语言程序设计本章的主要容是汇编语言语句行的构成,源程序的结构,汇编语言程序设计方法。3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分支、循环结构的程序设计,子程序结构的设计与调用,中断指

29、令的应用。另外,汇编语言伪指令的使用、源程序的结构等也是必须掌握的。3.1.1 汇编语言语句行的构成1标识符:由数字、字母和下划线组成,且不能以数字开头,最大长度不超过31个字符。2保存字:汇编语言中保存下来的具有特殊用途的字串,如指令、伪指令、存放器名等都是保存字。保存字不可用作标识符。3界符:程序或指令中两个局部的分隔符号。汇编语言源程序中可用的界符: ; , : ? $ + - = * / 4常量:数字常量,可以使用不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。1存放器:8086/8088 CPU的存放器可以作为指令的操作数。2变量:即存

30、单元的符号地址。变量不能与保存字、段名重名。它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移有效、逻辑地址。类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。3标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。标号不能与保存字重名,可使用字母、数字与下划线,但不允许用数字开头,字符个数不超过31个。标号作为符号地址也有三个属性:段、偏移量和类型NEAR、FAR。表达式是作为语句的一个操作数,在汇编时一个表达式得到一个值。1操作数数据常数、符号常量;存储单元地址常用符号地址表示。2运算符算术

31、运算符:+、-、*、/、MOD。对地址的运算仅有+加、-减运算符。逻辑运算符:AND、OR、NOT和XOR。注意,不要将其和同样名称的指令操作码相混淆。关系运算符:EQ、NE、LT、GT、LE和GE。参与关系运算的两个操作数必须都是数值,或同一段中的两个存储单元地址,运算结果为0FFFFH真,True或0假,False。分析运算符:0FFSET取一个标号或变量的偏移地址;SEG取一个标号或变量所在段的段地址;TYPE取变量和标号的类型BYTE、WORD、DWORD或NEAR、FAR;SIZE计算一个存储区的字节总数;LENGTH计算存储区中数据单元的数目,只对数据定义中的DUP操作有效。 综合

32、运算符:PTR用于暂时改变变量或标号的原有属性,只在当前语句中有效; THIS和PTR类似,用于改变存储区的类型; SHORT指定一个标号为短标号。指令语句:主要由CPU指令组成,每条语句在汇编过程中都会产生对应的目标代码。伪操作或伪指令语句:为汇编程序提供信息,让汇编程序在汇编过程中执行特定的功能。两者本质区别在于,伪指令在汇编过程中不形成任何代码。这里仅对伪指令进展总结。1符号定义伪指令赋值语句格式:符号常量 EQU 表达式 或 符号常量 表达式功能:把表达式的值赋给符号名。说明:在程序中,用EQU语句赋值的符号名不能被重新赋值,但用“号赋值的符号名可以被重新赋值。假设要重新赋值,必须使用

33、解除伪指令PURGE。2存数据定义伪指令格式:变量名 数据定义 表达式或数据项表功能:可为数据项分配存储单元,并根据需要设置其初值。还可用符号代表数据项。说明:数据定义符有字节DB、单字DW、双字DD、8字节DQ、10字节DT;DUP表示数据重复,“$表示地址计数器当前值,“?用于预留存储空间;数据项允许为字符串。3段定义伪指令格式:段名 SEGMENT 定位方式连接方式类别名 段体段名 ENDS功能:为程序汇编和说明了段名、分段的各种属性以与分段的开始和完毕。段名是自定义符,开始的段名与完毕的段名必须一样。段的长度不超过64KB。属性参数定义:定位方式,指定段的起始地址边界。有四种方式:页边

34、界PAGE、段边界PARA系统隐含、字边界WORD、字边界BYTE。连接方式,告诉连接程序本段与其他段的连接方式。系统隐含为不写,表示本段不与任何段。STACK表示此段为堆栈段。类别名,是合法的自定义符,长度不超过40。但凡类别名一样的段在连接时均按先后顺序连接在相邻存储区中。说明:段名的命名规如此和变量名以与标号一样;单模块程序中属性参数可省略不写。 4段址存放器说明伪指令格式:ASSUME 段存放器:段定义名1,段存放器:段定义名2,功能:告诉汇编程序在汇编时,段存放器CS、DS、SS和ES应具有的符号段基址。段存放器实际值CS除外由传送指令在执行程序时赋值。5过程子程序定义伪指令格式:过

35、程名 PROC NEAR或FAR 过程名 ENDP说明:过程名是自定义符。调用格式为:CALL 过程名过程中的RET指令,实现从过程返回调用处。选NEAR,过程是段调用,过程中的RET是段返回。选FAR,过程是段间调用,过程中的RET是段间返回。系统默认是近过程。6模块开始伪指令格式:NAME 模块名功能:该伪指令指明程序模块的开始,并指出模块名。模块名是自定义符,不能与系统保存字同名。每次汇编只能出现一次。假设该伪指令不写,如此取TITLE语句中的页标题前6个字符;假设没有TITLE语句,如此取源程序文件名为模块名。7建立标题伪指令格式:TITLE 标题功能:建立每页标题。8模块完毕伪指令格

36、式:END 启动标号或过程名功能:告诉汇编程序源文件完毕,并给出执行程序的入口。仅用于主模块才有意义。9定位伪指令格式:ORG 表达式功能:把该伪指令以下所定义的存数据或程序,从表达式的值所指定的起点开始连续存放,直至遇到新的ORG指令。表达式的值是一个无符号数。10系统隐含进位制伪指令格式:RADIX 表达式功能:定义在源程序中书写数据时隐含进位制方式。表达式的值是216之间的十进制数,要遇到新的RADIX伪指令以后才改变隐含进位制。汇编语言源程序的结构8088汇编语言源程序采用分段结构的形式,一个完整的汇编语言源程序通常由假设干个逻辑段组成,包括数据段、附加数据段、堆栈段和代码段。 2源程

37、序根本框架 DSEG SEGMENT ;数据定义DB/DW/DD DSEG ENDSESEG SEGMENT ESEG ENDSSSEG SEGMENT STACKDW 512 DUP(?) ;堆栈段大小为1024BSSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:ESEG;指定段存放器与段之间的对应关系START: MOV AX,DSEG MOV DS,AXMOV AX,ESDGMOV ES,AX ;DS、ES段存放器初始化 ;程序局部MOV AX,4C00H ;8088/8086为MOV AH,4CHINT 21H ;程序完毕,返回DOS CS

38、EG ENDS END START说明:CS段存放器的初值,由系统自动指定为END后的地址; ES段存放器的初值,可以用类似DS的方法设置,或由系统指定为定义了STACK属性的段。假设未定义堆栈段,如此系统默认使用系统堆栈。3.1.3 汇编语言程序设计的方法顺序结构是最根本的结构。其特点是CPU按指令排列的顺序逐条执行。2.分支选择结构程序设计的方法分支结构,根据不同的条件转到不同的程序段执行。循环结构,完成需要重复执行的工作。通常由三局部组成:初始化局部,完成对地址指针存放器、计存放器等循环中用到的存放器与存储器置初值;循环体,完成需重复执行的工作;循环控制,用于判断循环是否完毕,假设完毕如

39、此跳出循环,未完毕如此修改地址指针和计数器值,为下一轮循环做准备。4混合结构程序设计方法混合结构程序设计是指上述三种设计方法的组合应用,也是程序设计中最常用的方法, 5子程序的设计方法子程序或过程是完成某项特殊功能的程序模块,可以在程序中的任何地方屡次被调用。用CALL指令调用子程序,用RET指令返回主程序;用伪指令PROC和ENDP定义子程序。主、子程序关系RETCALL子程序主程序1参数传递方式通过存放器传递,适用于传递参数个数少的情况;通过程序存储器中的参数表传递,在主程序中把要传送的参数直接放在调用指令的后面,而在子程序中到堆栈中取返回地址,以获得参数。通过堆栈传递,适用于参数较多,且

40、子程序有嵌套、递归调用的情况。主程序将要传递的参数压入堆栈,子程序中再将这些参数从堆栈中弹出。2存放器和存储单元的容保护保护现场在主程序中用到的存放器或存储单元,要在子程序里被用到,而主程序并不希望这些单元的容被修改,此时必须在子程序入口处将这些单元容压入堆栈保护起来。6其它设计方法介绍1DOS和BIOS中断功能调用DOS和BIOS为用户提供了两组系统服务程序,用户可以采用软中断指令INT N来调用。DOS调用与BIOS调用相比,不依赖于硬件,通用性较好,但执行效率较低。DOS和BIOS中断功能调用的使用方法如下列图:置功能号n (AH)置入口参数执行INT 21H分析出口参数2宏指令条件汇编

41、条件伪操作的一般格式如下:IF 条件 语句组1ELSE ;可选的 语句组2ENDIF如果条件为真,如此汇编语句组1,否如此如有ELSE如此汇编语句组2,如无ELSE如此不生成条件块。ENDIF表示完毕条件汇编。下表给出了汇编语言的条件伪操作与其意义。表3 条件伪操作与其意义 条件伪操作 意 义 IF表达式 如果汇编程序求出的表达式非0,条件为真IFE表达式 如果汇编程序求出的表达式等于0,条件为真IF1 如果是第一遍扫描,条件为真IF2 如果是第二遍扫描,条件为真 IFDEF符号 如果符号在程序中有定义或被说明为EXTRN,条件为真IFNDEF符号 如果符号在程序中无定义或未用EXTRN说明,

42、条件为真 IFB变元 如果变元是空白符,条件为真变元要求带尖括号IFNB变元 如果变元不是空白符,条件为真 IFIDN变元1,变元2 如果变元1的字符串和变元2的字符串一样,条件为真IFNIDN变元1,变元2 如果变元1的字符串和变元2的字符串不同,条件为真3.2 例题解析1伪指令与指令的区别是什么?答:指令是在程序运行期间由CPU执行的,汇编后由对应的机器代码所代替。伪指令是不可执行的,它只在源程序汇编期间由汇编器处理的命令,用来指示汇编器为数据分配存空间,或是为汇编器提供源程序完毕或段定义等信息。二者本质区别在于,伪指令在汇编过程中不形成任何代码。2.设有数据段如下:DATA SEGMEN

43、T BUF1 DB 1, 6, 3, 90H,A,G,V BUF2 DW 567, 9087, 100 DUP(?), 1, 4, BUF3 DW 100 DUP(?)DATA ENDS试确定如下指令执行后存放器AX的值。1MOV AX, TYPE BUF12MOV AX, TYPE BUF23MOV AX, SIZE BUF14MOV AX, SIZE BUF25MOV AX, SIZE BUF36MOV AX, LENGTH BUF17MOV AX, LENGTH BUF28MOV AX, LENGTH BUF3解:LENGTH运算仅对数据定义中的DUP操作有意义。1AX=1 2AX=2

44、3AX=7 4AX=2085AX=200 6AX=1 7AX=1 8AX=1003.数据段定义如下:DATA SEGMENT D01 DW 1580H D01_ADR DW D01DATA ENDS请给出如下指令执行后BX的值。XOR SI, SIMOV BX, D01 ;1 MOV BX, D01+2 ;2 MOV BX, SI+D01 ;3 MOV BX, OFFSET D01 ;4 LEA BX, D01+2 ;5解:1BX=1580H 相当于MOV BX, 00002BX=0000H 相当于MOV BX,0000+23BX=1580H 相当于MOV BX,SI+0 4BX=0000H

45、5BX=0002H 4.设有如下定义: VAR DW 10 DUP(?) 分别用LABEL、PTR、THIS和EQU实现将VAR的第0字节置0。解:1 VAR0 LABEL BYTE VAR DW 10 DUP(?)MOV VAR0, 02 VAR DW 10 DUP(?) MOV BYTE PTR VAR, 03 VAR0 EQU THIS BYTE VAR DW 10 DUP(?) MOV VAR0, 06采用查表法,实现一位16进制数,转换为ASCII码显示。解:将0F的ASCII码顺序存放在数据区中,一个十六进制数本身恰好是其对应的ASCII码在数据区中的偏移量。源程序如下:DSEG

46、SEGMENTASC DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;09的ASCII码DB 41h,42h,43h,44h,45h,46h ;AF的ASCII码HEX DB 04h,0Ah ;设两个数据DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEGSTART: MOV AX, DSEG MOV DS, AXMOV BX, OFFSET ASC ;BX指向ASCII码表MOV AL, HEX ;AL取得一位16进制数,也是ASCII码表中的偏移AND AL, 0FH ;只有低4位有效,高4位清0XLAT ;换码

47、:ALDS:BXALMOV DL, AL ;入口参数:DLALMOV AH, 2 ;02号DOS功能调用INT 21H ;显示一个ASCII码字符MOV al, HEX+1 ;转换并显示下一个数据AND al, 0FHXLATMOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCSEG ENDS END START7设存中有三个互不相等的无符号字数据,分别是放在DA开始的字单元,编制程序将其中最大值存入MAX单元。解: 数1和数2比拟,将较大的数再与数3比拟,就可以求三个无符号数中的最大值。源程序如下:DSEG SEGMENTDA DW 348AH, 561

48、2H, 490EHMAX DW ?DESG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX, DSEG MOV DS, AXLEA SI, DA MOV AX, SI ;AX数1 MOV BX, SI+2 ;BX数2 CMP AX, BX ;比拟AX、BX,确保AX较大的数JAE MAX1 MOV AX, BX MAX1: CMP AX, SI+4JAE MAX2 MOV AX, SI+4MAX2: MOV MAX,AXMOV AH, 4CHINT 21HCSEG ENDS END START8在数据段定义首地址为A的10个字符,将这10个字符以相反次序传送到附加段首地址为B的存单元中。解:源程序如下:DSEG SEGMENTA DB 0123456789B

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!