微机原理与接口技术课后习题答案_第1页
微机原理与接口技术课后习题答案_第2页
微机原理与接口技术课后习题答案_第3页
微机原理与接口技术课后习题答案_第4页
微机原理与接口技术课后习题答案_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

1、.252. 将下列二进制数、十六进制数转换成十进制数。(1)10111010110010010 (2)100110.1101 (3)0FFA9H (4)14AF.5DH3. 写出下列十进制数的原码、反码和补码(用8位二进制)。(1)+65 (2)-65 (3)+115 (4)-1154. 写出下列用补码表示的二进制数的真值(即十进制数)。(1)01101110 (2)01011001 (3)10001101 (4)111110015. 当前计算机的体系结构由哪五部分组成?6. 试述微型计算机的一般结构。7. Intel8088在功能上可以分为哪两大部分?各有什么功能?8. 试述Intel808

2、8所采用的取指令与执行指令重叠技术的原理及好处。9. 为什么说Intel8088是准16位的微处理器芯片?10.Intel8088的通用寄存器有哪些?那些寄存器可拆分为高低字节两部分使用?11.Intel8088对存储器的寻址范围是多少?为什么?12.为什么Intel8088的存储器地址空间要分段?请说明其物理地址的形成过程。参考答案:1. (1)1111101.101B,175.5Q,7D.AH (2)1000100100.11B,1044.6Q,224.CH (3)101111000.001B,570.1Q,178.2H (4)11111110.01B,376.2Q,FE.4H2. (1)

3、95634D (2)38.8125D (3)65449D (4)5295.36328125D3. (1)01000001B,01000001B,01000001B (2)11000001B,10111110B,10111111B (3)01110011B,01110011B,01110011B (4)11110011B,10001100B,10001101B4. (1)+110D (2)+89D (3)-115D (4)-7D5. 当前计算机的体系结构由运算器、控制器、存储器、输入设备和输出设备组成,称为冯.诺依曼体系结构。6. 微型计算机的一般结构可表示为微型计算机微处理器控制器运算器寄存器

4、组内部存储器输入/输出接口 7. 略。8. 略。9. Intel 8088微处理器的内部体系结构是16位,与外部通信采用8位数据总线,因此也称为准16位微处理器。10.略。11. Intel8088芯片的地址引脚有20个,对存储器的寻址范围为 220=1MB。12. 8088有20根地址线,它的直接寻址范围为220 = 1MB(Byte,字节)。所以在以8088组成的微机系统中,可以有1MB的内部存储器。而8088中的寄存器都是16位的,所以16位的寄存器只能给出来16位的地址,寻址空间只能在64KB的范围内。因此,在8088系统中,将1MB的内存分成若干个段,一个段最大64KB,最小16B(

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

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

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

8、式,其他寻址方式可以归结为存储器寻址方式一,允许段跨越,以便取得存储器中其它段中的数据。2.与转移地址有关的寻址这种寻址方式用来确定转移指令及子程序调用指令的转向地址,分为段内直接寻址方式、段内间接寻址方式、段间直接寻址方式、段间间接寻址方式。2.2 例题解析1指出下列指令的错误:(1)MOV AH, BX (2)MOV SI, BX (3)MOV AX, SIDI(4)MOV AX, BXBP (5)MOV BX,ES:AX (6)MOV BYTE PTRBX, 1000解:(1)源操作数和目的操作数的类型不匹配,即字长不一致。必须字节对字节,字对字。(2)源操作数和目的操作数不能同时为存贮

9、器寻址方式。(3)基址变址方式没有SI和DI的组合。因为SI和DI都变址寄存器。(4)BX和BP作为基址寄存器不允许组合使用。(5)AX为16位通用数据寄存器,ES:为段跨越前缀,指明存储器的所在段,ES:AX为非法。(6)源操作数和目的操作数的类型不匹配,1000超出一个字节的表示范围,而BYTE PTRBX表示字节存储器。2已知(DS)=3000H,(SS)=3001H,(BX)=100H,(BP)=0F3H,(SI)=2,内存单元的值如图所示,求下列指令执行后AX的值。 30100H30101H30102H30103H30104H30105H30106H30107H12H34H05H06

10、H1AH10H7CHOBH(1)MOV AX, 1200H (2)MOV AX, BX(3)MOV AX, 100H (4)MOV AX, BX(5)MOV AX, 2BX (6)MOV AX, BXSI(7)MOV AX, BPSI (8)MOV AX, DS:11HBPSI(9)MOV AX, 4HBXSI 解:(1)(AX) = 1200H 立即寻址(2)(AX) = 0100H 寄存器寻址(3)(AX) = 3412H 直接寻址 源操作数物理地址 = (DS) 10H + 100H = 30100H(4)(AX) = 3412H 寄存器间接寻址 源操作数物理地址 =(DS) 10H +

11、(BX)= 30100H(5)(AX) = 0605H 寄存器相对寻址 源操作数物理地址 =(DS) 10H +(BX)+ 2H = 30102H(6)(AX) = 0605H 基址变址寻址 源操作数物理地址 =(DS) 10H +(BX)+(SI)= 30102H(7)(AX) = 7C10H 基址变址寻址 源操作数物理地址 =(SS) 10H +(BP)+(SI)= 30105H(8)(AX) = 0B7CH 相对基址变址寻址(段超越) 源操作数物理地址 =(DS) 10H +(BP)+(SI)+ 11H = 30106H(9)(AX) = 0B7CH 相对基址变址寻址 源操作数物理地址

12、=(DS) 10H +(BX)+(SI)+ 4H = 30106H3指出下列程序中用(.)指定的指令执行后AX、DX、CF的值,以及该程序段的功能。MOV AX,7856HMOV DX,8234HADD AX,8998H (1)ADC DX,1234H (2)SUB AX,4491H (3)SBB DX,8000H (4)解:(1)AX=01EEH,CF=1(2)DX=9469H,CF=0(3)AX=BD5DH,CF=1(4)DX=1468H,CF=0功能:作双字的加减法运算,即(DX:AX)=8234 7856H + 1234 8998H - 8000 4491H = 1468 BD5DH,

13、注意:在作高位字的运算时,要考虑进位和借位的情况,故应用ADC或SBB指令。 4已知(DS)=1000H,(ES)=2000H,(BX)=200H,(SI)=10H,内存单元的值如图所示。分别给出下列各条指令执行后BX、DS、ES的值。 1000:0210H1000:0211H1000:0212H1000:0213H00H41H02H03H(1)MOV BX, BXSI(2)LEA BX,BXSI(3)LDS BX,BXSI(4)LES BX,BXSI解:(1)(BX)=4100H,(DS)=1000H,(ES)=2000H(2)(BX)=0210H,(DS)=1000H,(ES)=2000H

14、(3)(BX)=4100H,(DS)=0302H,(ES)=2000H(4)(BX)=4100H,(DS)=1000H,(ES)=0302H5给出下列程序实现的功能。PUSH AXPUSH BXPOP AXPOP BX解:交换AX和BX值。6给出下列指令执行后,AL、BL的值,以及标志位的值。MOV BL, 10101010B AND BL, 11110110B (1)OR BL, 00001001B (2)XOR BL, 00001001B (3)NOT BL (4)解:(1)BL=10100010B。CF=OF=0,SF=1,ZF=0,PF=0,AND常用于复位某些位(同0与),不影响其他

15、位。(2)BL=10101011B。CF=OF=0,SF=1,ZF=0,PF=0,OR常用于置位某些位(同1或),不影响其他位。(3)BL=10100010B。CF=OF=0,SF=1,ZF=0,PF=0,XOR常用于求反某些位(同1异或),不影响其他位。(4)BL=01011101B。标志位不变。NOT作按位取反操作,不影响标志位。7编写程序段,用移位和加法实现将AL寄存器中的无符号数乘10的功能。解: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

16、 ;(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指令,以免改变AX)JZ EVEN ;标志ZF=1,即D0=0:AX是偶数,程序转移ADD AX,01H ;标志ZF=0,即D0=1:AX内的奇数,加1EVEN: SHR AX,1 ;AXAX2 (2) MOV BX,AX SHR BX,01H ;将AX的最低位D0移进CF JNC EVEN ;标志CF=0

17、,即D0=0:AX内是偶数,程序转移 ADD AX,01H ;标志CF=1,即D0=1:AX内的奇数,加1EVEN: SHR AX,01H ;AXAX29用MOV和LOOP指令完成和下列指令一样的功能:REP MOVSB(DF=0)解:NEXT: MOV AL, SI MOV ES:DI, AL INC SI INC DILOOP NEXT10编写程序段,求1+2+100之和,并将结果存入AX中。解: XOR AX, AXMOV CX, 100AGAIN: ADD AX, CX LOOP AGAIN2.3 习题与参考答案1. Intel8088的寻址方式有那几类?每一类又有那几种?2. Int

18、el8088各种寻址方式是如何形成物理地址的?3. 段跨越前缀在指令中起什么作用?4. 在双操作数指令中目的操作数的寻址方式有什么限制?5. 在双操作数指令中目的操作数和源操作数的寻址方式有什么规定?6. 设当前数据段段地址寄存器的内容为1B00H,在数据段的偏移地址2000H单元中含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列。7. TABLE为数据段中0032H单元的符号地址,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么? MOV AX,TABLE LEA AX,TABLE

19、 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,(21202H)=B7H,(21203H)=65H试说明下列各条指令单独执行以后AX寄存器的内容。 (1) mov ax,1200

20、h (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位带符号数的单元地址。 (1)ZW +(Z-X) (2)ZW-(X+6)-(R+6) (3)Z(W*X)/(Y+6)的商 R(W*X)/(Y+6)的余 (4)Z(W-X)/5*Y)*211. 写出对存放在DX和AX中的双字长求补的指令序列。12. 写出完成以下操作的程序段。假设各变量的值均为用压缩BCD码表示的二位十进制数。(

21、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. 已知(SS)9000H,(SP)0E200H 则整个堆栈段物理地址范围为 ,栈顶的物理地址为 。17. 下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。 (1) XCHG CS,AX (2) MOV BX,100

22、0H (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 (10)SUB 56,AL18. 指令序列为:CMP AX,BXJ L1请在能引起转移到L1单元的条件转移指令下面划钩,AX、BX的内容给定如下:AXBXJBJNBJBEJNBEJLJNLJLEJNLE1F521F52 88C988C9 FF82007E 58BA020E FFC5FF8B 09A01E97 8AEAFC29 D36732A6 19. 假如在程序的括号中分别

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

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

25、+(BP)+(SI)|(DI)相对基址变址寻址方式:物理地址=(DS)16D +(BX)+(SI)|(DI)+ 8位|16位位移量物理地址=(SS)16D +(BP)+(SI)|(DI)+ 8位|16位位移量3. 答:在指令中段跨越前缀允许CPU访问别的数据段的数据。4. 答:其限制有: (1)两操作数不能同时使用存储器寻址方式; (2)除源操作数为立即寻址方式外,两操作数中至少一个为寄存器寻址方式; (3)目的操作数不能为立即数。5. 答:源操作数可使用所有寻址方式,目的操作数除立即寻址方式外其他寻址方式均可使用。另外要考虑第4题中所述的限制。6. 解: LDS SI,2000H MOV A

26、X,SI7. 解:MOV AX,TABLE ;以TABLE为偏移地址的内存单元的内容送AX,指令执行完后,;(AX)= 1234HLEA AX,TABLE ;TABLE的偏移地址送AX,指令执行完后,(AX)= 0032H8. 解: SPFFA0:0080 SPFFA0:007E SPFFA0:007C79H SPFFA0:007E79H 0FH0FH 57H57H57H 80H80H80H 初始状态 PUSH PUSH POP9.解:(1)1200h(2)0100h(3)4c2ah(4)3412h(5)4c2ah(6)7856h(7)65b7h 10. 解:(1) MOV AX,Z SUB

27、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 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 D

28、AA 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 另解: 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(2240

29、0H),即; 00H(22400H),20H(22401H)15. 答:PUSH和POP堆栈操作指令中操作数为除立即寻址方式外的所有寻址方式,字操作。16. 解:90000H,9E1FFH,9E200H17. 解:(1)错。码段段址寄存器CS不能出现在指令中。 (2)错。双操作数指令中两操作数不能同为存储器寻址方式。 (3)错。IP是指令指针寄存器 ,它的内容是下一条要取出的指令的偏移地址,不能为用户所用,故不能出现在指令中。 (4)(5)错。原因同(1)。 (6)错。IN为输入指令,不能使用BX,只能使用累加器AX或AL,接受端口上的数据信息。指令中DX内存放16位端口地址。 (7)错。数据

30、类型不匹配,“BYTE PTR BX”指示目的操作数将存放在一个字节的存储器内,源操作数为立即数1000为字数据。 (8)错。原因同(1)。 (9)错。SI和DI都是变址寄存器,不能同时使用。 (10)错。双操作数指令中目的操作数不能为立即数。18.答:见表1 表1 题18答案 AXBXJBJNBJBEJNBEJLJNLJLEJNLE1F521F52 88C988C9 FF82007E 58BA020E FFC5FF8B 09A01E97 8AEAFC29 D36732A6 19.答:见表2 表2 题19答案 指令AXBXCXDXLOOP L200004H000BH0000H0000HLOOP

31、NE L200004H000BH0000H0000HLOOPE L200002H0004H0002H0002H 第三章 8088汇编语言程序设计本章的主要内容是汇编语言语句行的构成,源程序的结构,汇编语言程序设计方法。3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分支、循环结构的程序设计,子程序结构的设计与调用,中断指令的应用。另外,汇编语言伪指令的使用、源程序的结构等也是必须掌握的。3.1.1 汇编语言语句行的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最大长度不超过31个字符。(2)保留字:汇编语言中保留下来的具有特殊用途的字串,如指令、伪指令、寄存

32、器名等都是保留字。保留字不可用作标识符。(3)界符:程序或指令中两个部分的分隔符号。汇编语言源程序中可用的界符: ; , : ? $ ( ) + - = * / (4)常量:数字常量,可以使用不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。(2)变量:即内存单元的符号地址。变量不能与保留字、段名重名。它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。类型,指指变量具有的字节数,包括BYTE

33、、WORD、DWORD、QWORD和TBYTE等。(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。标号不能与保留字重名,可使用字母、数字及下划线,但不允许用数字开头,字符个数不超过31个。标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。3.表达式表达式是作为语句的一个操作数,在汇编时一个表达式得到一个值。(1)操作数数据常数、符号常量;存储单元地址常用符号地址表示。(2)运算符算术运算符:+、-、*、/、MOD。对地址的运算仅有+(加)、-(减)运算符。逻辑运算符:AND、OR、NOT和XOR。注意,不要将其和同样名称的指令操作码相混淆。关系运算符:EQ、

34、NE、LT、GT、LE和GE。参与关系运算的两个操作数必须都是数值,或同一段中的两个存储单元地址,运算结果为0FFFFH(真,True)或0(假,False)。分析运算符:0FFSET取一个标号或变量的偏移地址;SEG取一个标号或变量所在段的段地址;TYPE取变量和标号的类型(BYTE、WORD、DWORD或NEAR、FAR);SIZE计算一个存储区的字节总数;LENGTH计算存储区中数据单元的数目,只对数据定义中的DUP操作有效。 综合运算符:PTR用于暂时改变变量或标号的原有属性,只在当前语句中有效; THIS和PTR类似,用于改变存储区的类型; SHORT指定一个标号为短标号。4.语句指

35、令语句:主要由CPU指令组成,每条语句在汇编过程中都会产生对应的目标代码。伪操作或伪指令语句:为汇编程序提供信息,让汇编程序在汇编过程中执行特定的功能。两者本质区别在于,伪指令在汇编过程中不形成任何代码。这里仅对伪指令进行总结。(1)符号定义伪指令(赋值语句)格式:符号常量 EQU 表达式 或 符号常量 表达式功能:把表达式的值赋给符号名。说明:在程序中,用EQU语句赋值的符号名不能被重新赋值,但用“”号赋值的符号名可以被重新赋值。若要重新赋值,必须使用解除伪指令PURGE。(2)内存数据定义伪指令格式:变量名 数据定义 表达式或数据项表功能:可为数据项分配存储单元,并根据需要设置其初值。还可

36、用符号代表数据项。说明:数据定义符有字节DB、单字DW、双字DD、8字节DQ、10字节DT;DUP()表示数据重复,“$”表示地址计数器当前值,“?”用于预留存储空间;数据项允许为字符串。(3)段定义伪指令格式:段名 SEGMENT 定位方式连接方式类别名 段体段名 ENDS功能:为程序汇编和链接说明了段名、分段的各种属性以及分段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过64KB。属性参数定义:定位方式,指定段的起始地址边界。有四种方式:页边界PAGE、段边界PARA(系统隐含)、字边界WORD、字边界BYTE。连接方式,告诉连接程序本段与其他段的连接方式。系

37、统隐含为不写,表示本段不与任何段链接。STACK表示此段为堆栈段。类别名,是合法的自定义符,长度不超过40。凡是类别名相同的段在连接时均按先后顺序连接在相邻存储区中。说明:段名的命名规则和变量名以及标号一样;单模块程序中属性参数可省略不写。 (4)段址寄存器说明伪指令格式:ASSUME 段寄存器:段定义名1,段寄存器:段定义名2,功能:告诉汇编程序在汇编时,段寄存器CS、DS、SS和ES应具有的符号段基址。段寄存器实际值(CS除外)由传送指令在执行程序时赋值。(5)过程(子程序)定义伪指令格式:过程名 PROC NEAR(或FAR) 过程名 ENDP说明:过程名是自定义符。调用格式为:CALL

38、 过程名过程中的RET指令,实现从过程返回调用处。选NEAR,过程是段内调用,过程中的RET是段内返回。选FAR,过程是段间调用,过程中的RET是段间返回。系统默认是近过程。(6)模块开始伪指令格式:NAME 模块名功能:该伪指令指明程序模块的开始,并指出模块名。模块名是自定义符,不能与系统保留字同名。每次汇编只能出现一次。若该伪指令不写,则取TITLE语句中的页标题前6个字符;若没有TITLE语句,则取源程序文件名为模块名。(7)建立标题伪指令格式:TITLE 标题功能:建立每页标题。(8)模块结束伪指令格式:END 启动标号或过程名功能:告诉汇编程序源文件结束,并给出执行程序的入口。仅用于

39、主模块才有意义。(9)定位伪指令格式:ORG 表达式功能:把该伪指令以下所定义的内存数据或程序,从表达式的值所指定的起点开始连续存放,直至遇到新的ORG指令。表达式的值是一个无符号数。(10)系统隐含进位制伪指令格式:RADIX 表达式功能:定义在源程序中书写数据时隐含进位制方式。表达式的值是216之间的十进制数,要遇到新的RADIX伪指令以后才改变隐含进位制。3.1.2汇编语言源程序的结构1.源程序结构8088汇编语言源程序采用分段结构的形式,一个完整的汇编语言源程序通常由若干个逻辑段组成,包括数据段、附加数据段、堆栈段和代码段。 2源程序基本框架 DSEG SEGMENT ;数据定义(DB

40、/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 CSEG ENDS END START说明:CS段寄存

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

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

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

44、出口参数(2)宏指令条件汇编条件伪操作的一般格式如下:IF 条件 (语句组1)ELSE ;可选的 (语句组2)ENDIF如果条件为真,则汇编语句组1,否则如有ELSE则汇编语句组2,如无ELSE则不生成条件块。ENDIF表示结束条件汇编。下表给出了汇编语言的条件伪操作及其意义。 表3 条件伪操作及其意义 条件伪操作 意 义 IF表达式 如果汇编程序求出的表达式非0,条件为真IFE表达式 如果汇编程序求出的表达式等于0,条件为真IF1 如果是第一遍扫描,条件为真IF2 如果是第二遍扫描,条件为真 IFDEF符号 如果符号在程序中有定义或被说明为EXTRN,条件为真IFNDEF符号 如果符号在程序中无定义或未用EXTRN说明,条件为真 IFB变元 如果变元是空白符,条件为真(变元要求带尖括号)IFNB变元 如果变元不是空白符,条件为真 IFIDN变元1,变元2 如果变元1的字符串和变元2的字符串相同,条件为真IFNIDN变元1,变元2 如果变元1的字符串和变元2的字符串不同,条件为真 3.2 例题解析1伪指令与指令的区别是什么?答:指令是

温馨提示

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

评论

0/150

提交评论