微型计算机原理及应用 课后答案(岐世峰 著) 西南交通大学出版社.pdf

上传人:赵** 文档编号:46684934 上传时间:2022-09-27 格式:PDF 页数:47 大小:422.14KB
返回 下载 相关 举报
微型计算机原理及应用 课后答案(岐世峰 著) 西南交通大学出版社.pdf_第1页
第1页 / 共47页
微型计算机原理及应用 课后答案(岐世峰 著) 西南交通大学出版社.pdf_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《微型计算机原理及应用 课后答案(岐世峰 著) 西南交通大学出版社.pdf》由会员分享,可在线阅读,更多相关《微型计算机原理及应用 课后答案(岐世峰 著) 西南交通大学出版社.pdf(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、(一)习题一解答(一)习题一解答【习题一】1、解释下列术语:(1)微处理器、微型计算机和微型计算机系统;(2)溢出;(3)I/O 接口。2、对于下列二进制数,如果为无符号数,值为多少?如果为带符号数,值又为多少?(1)01011010(2)10110110(3)10001101(4)11111001 3、求下列机器数的原码、反码和补码。(1)01000000(2)01111101(3)10000010(4)11111111 4、对于下列十进制数,采用 8 位补码计算,判断下列运算是否溢出。(1)(-76)+65(2)(-76)-65(3)76-(-65)(4)76+(-65)5、完成下列无符号

2、数的运算,并转换为十进制数进行核对。(1)10011010+00101101 (2)11001000-00001101(3)11011010 (4)110000110101 6、写出下列字符串的 ASCII 码值;This is an English book.答案【习题一】1、(1)微处理器:是微型计算机的核心,其基本功能是进行数据的算术运算和逻辑运算,暂存数据并控制和指挥其他部件协调一致的工作。由算术逻辑单元、控制器、寄存器陈列等组成;微型计算机:由微处理器、内存储器、I/O 接口电路及系统产品线组成;微计算机系统包括硬件系统(中央处理器(CPU)、存储器、输入输出接口和输入输出设备等部件

3、)和软件系统(软件系统包括系统软件和应用软件两部分)两部分。(2)溢出:指计算机中用有限位的二进制来表示数据,在运算过程中,可能使用运算结果超出有限位的表示的范围,即为溢出。(3)I/O 接口:I/O 接口电路是介于计算机和外部设备之间的电路。I/O 接口电路基本功能:1)缓存数据,使各种速度的外部设备与计算机速度相匹配;2)信号变换,使各种电气特性不同的外部设备与计算机相连接;3)联络作用,使外部设备的输入输出与计算机操作同步。2、(1)01011010 无符号数:110,带符号数:110(2)10110110 无符号数:182,带符号数:-54(3)10001101 无符号数:141,带符

4、号数:-13(4)11111001 无符号数:249,带符号数:-121 3、(1)01000000 原码、反码和补码都为 01000000(2)01111101 原码、反码和补码都为 01111101(3)10010010 原码、反码和补码分别为 10010010、11101101、11101110(4)11111111 原码、反码和补码分别为 11111111、10000000、10000001 4、答:76、-76、65、-65 的补码分别为:01001100、10110100、01000001、10111111(1)(-76)+65 10110100+01000001 11110101

5、(-76)+65=-11,又 11110101=(-11)补,所以无溢出。(2)(-76)-65 10110100+10111111 01110011(-76)-65=-141,超出了-128+127 的范围,发生溢出。运算结果:01110011=+115 为错误结果。(3)76-(-65)01001100+01000001 10001101 76-(-65)=141,超出了-128+127 的范围,发生溢出。运算结果:10001101=-3 为错误结果。(4)76+(-65)01001100+10111111 00001011 76+(-65)=11,又 00001011=(11)补,所以无

6、溢出。5、(1)1001 1010+0010 1101=1100 0111;转换为十进制运算:154+45=199(2)1100 1000-0000 1101=1011 1011;转换为十进制运算:200-13=187(3)11011010=10000010;转换为十进制运算:1310=130(4)110000110101=00100111;转换为十进制运算:1955=39 6、This 84 104 105 115 is 105 115 an 97 110 English 69 110 103 101 105 115 104 book 98 111 111 107.(二)习题二解答(二)习题

7、二解答 1.8086CPU 包括 EU 和 BIU,将下列部件的番号填与后面:EU_ BIU_(1)段寄存器组 (2)ALU (3)指令队列 (4)指令指针 (5)EU 控制器 (6)通用寄存器组 (7)20 位地址加法器 (8)标志寄存器 (9)暂存器 (10)总线控制器 2.8086 系统中为什么一定要有地址锁存器?需要锁存哪些信息?3.8086CPU 的标志寄存器使用的几位分别有什么作用?4.对于 8086CPU,假设(DS)=0260H,(CS)=0540,(SS)=2200H。(1)在数据段可存储的数据最多为多少字节?首末地址各位多少?(2)堆栈段可最多存多少个 16 位的字?(3)

8、代码段可最多存多少个字节的程序?其首末地址是多少?5.某数据段由 52 个字节组成,其起始地址为 BA2CH:1051H,试确定该数据段的首末单元的实际地址。6.某代码段的地址范围是 9B200HA0100H,确定 CS 的值和该段的长度。7.若 8086CPU 工作于最小模式,试指出当 CPU 完成将 AH 的内容送到物理地址为 91001H的存储单元操作时,以下哪些信号应为低电平:M/IO、RD、WR、BHE/S7、DT/R?若 CPU 完成的是将物理地址 91000H 单元的内容送到 AL 中,则上述哪些信号应为低电平?8.什么是指令周期?什么是总线周期?什么是时钟周期?9.8086CP

9、U读/写总线周期各包含多少个时钟周期?什么情况下需要插入Tw周期?应插入多少个 Tw 取决于什么因素?10.试简述 8086 系统最小模式时从储存器读数据时的时序过程。【习题二】1、答:EU(2)(5)(6)(8)(9)BIU(1)(2)(4)(7)(10)2、答:由于 8086CPU 的地址总线和数据总线存在分时复用的情况,在进行访问存储器或 I/O端口时,必须地址信号有效选中相应单元或相应端口,而又得通过复用的数据线上进行数据传送。所以不能同时在复用线上传送地址和数据,得先把地址传送入一个地址锁存器保持地址信号。同时BHE和 20 位地址信号一起,用地址锁存器进行锁存,使它们的状态在整个总

10、线周期有效。3、答:用到了 9 位,其中 6 个状态标志位,3 个控制标志位。6 个状态标志位是:CF(Carry Flag)进位标志位:运算中发生进位或借位时,CF=1;否则,CF=0。用STC 指令可置 CF=1,CLC 指令置 CF=0。CMC 指令对 CF 求反;循环指令也会影响该标志位。AF(Auxiliary Carry Flag)辅助进位标志位:字节操作时,在运算结果的低位向高位有进位(加法)或有借位(减法);在字操作时,低字节向高字节有进位(加)或借位(减)时,则 AF,否则 AF。该标志一般在 BCD 码运算中作为是否进行十进制调整的判断依据。OF(Overflow Flag

11、)溢出标志位:当运算结果超出机器的表示范围时,OF=1;否则OF=0。如:带符号数的操作数,当按字节运算超出128+127;按字运算超出32768+32767 范围时,OF=1;SF(Sign Flag)符号标志位:在有符号运算数的算术运算时,当运算结果为负时,SF=1;否则 SF=0。ZF(Zero Flag)零标志位:运算结果为零时,ZF=1;否则 ZF=0。PF(Parity Flag)奇偶标志位:当运算的结果的低 8 位“1”的个数为偶数时,PF=1;否则 PF=0。3 个控制标志位:DF(Direction Flag)方向标志位:控制串操作指令对字符串处理的方向。DF=0 时,变址地

12、址指针 SI,DI 作增量操作,即由低地址向高地址进行串操作,字节操作增量为 1,字操作时增量为 2;DF=1 时,作减量操作,即由高地址向低地址进行串操作。用 STD 指令可置 DF=1,CLD 指令置 DF=0。IF(Interrupt Flag)中断允许标志位:控制可屏蔽中断的标志。当 IF=1 时,允许 CPU响应可屏蔽中断的请求;当 IF=0 时,禁止响应。用 STI 指令可置 IF=1,CLI 指令置 IF=0。TF(Trap Flag)陷阱标志位:这是为程序调试而提供的 CPU 单步工作方式。若 TF=1时,CPU 每执行完一条指令就产生一个内部中断(单步中断),以便对每条指令的

13、执行结果进行跟踪调查。当 TF=0 时,CPU 正常执行程序。4、答:(1)数据段可存放最多 64KB,首地址是 02600H,末地址是 125FFH;(2)堆栈段可存放最多 32K 个 16 位的字;(3)代码段可最多存 64KB 的程序,首地址是 05400H,末地址是 153FFH 5、答:首地址:BA2CH10H+1051H=BB311H,末地址:BB311H+34H-1=BB344H 6、答:(CS)=9B20H,该段长 4F01H 个字节。7、答:WR、BHE/S7;RD、DT/R 8、答:指令周期指 CPU 从内存取出一条指令并执行这条指令的时间总和;总线周期通常把CPU 通过总

14、线对微处理器外部(存贮器或 I/O 接口)进行一次访问所需时间称为一个总线周期。一个总线周期一般包含 4 个时钟周期,这 4 个时钟周期分别称 4 个状态即 T1 状态、T2状态、T3 状态和 T4 状态。时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如 12M 的晶振,它的时间周期就是 1/12 us),是计算机中最基本的、最小的时间单位。9、8086CPU 读/写总线周期各包含 4 个基本时钟周期(即 T1、T2、T3、T4状态),当外设没有准备就绪时,需要在 T3状态后插入 Tw 周期,应插入个 Tw 取决于外设是否准备就绪。10、答:

15、8086 系统最小模式时从储存器读数据时的时序过程:T1周期:输出地址,IOM/信号有效,RDT/有效;ALE 有效,输出地址;输出BHE信号;T2周期:等待和准备读数据,RD信号有效;DEN信号有效,打开数据缓冲器;T3周期:数据进入数据总线,CPU 测试 READY 输入,为 1 就进入下一周期;否则进入TW(同 T3);T4周期:CPU 采样数据总线,完成读操作。RD信号复原;DEN信号复原;RDT/信号复原;IOM/信号复原。(三)习题三解答(三)习题三解答 1 8086 汇编语言指令的操作数寻址方式有哪几类?答:8086/8088 对于操作数寻址提供了 8 种寻址方式,他们是隐含寻址

16、,立即数寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址和相对基址变址寻址。寄存器寻址的指令执行速度最快。2 当指令进行间接寻址方式时,BX,BP,SI,DI 分别针对什么情况来使用?答:用于间接寻址的寄存器只有 BX、BP、SI、DI 四个,其中仅当使用 BP 时默认在堆栈段寻址,使用 BX、SI、DI 时默认在数据段寻址(但注意如为串操作指令,使用 DI 时则默认在附加段寻址)。位移量也可以用符号表示,可以写在寄存器名前,也可写在寄存器名后,甚至可以写在方括号内。3 请指出以下各指令的源、目的操作数所使用的寻址方式。(1)MOV SI,2100H(2)SBB DIS

17、PBX,7(3)AND DI,AX(4)OR AX,609EH(5)MOV BXDI30H,CX(6)PUSH ES:BP(7)CALL DIDISP(8)JNZ Short_ label 答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址(2)源操作数:立即数寻址;目的操作数:(带位移量的)基址寻址(3)源操作数:寄存器寻址;目的操作数:变址寻址(4)源操作数:直接寻址;目的操作数:寄存器寻址(5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址(6)源操作数:带段超越的基址寻址;目的操作数:隐含寻址(7)只有一个操作数,为(带位移量的)变址寻址(8)只有一个操作数,为相对寻

18、址 4 指出下列指令的错误原因(1)INC SI(2)MOV AX,BL(3)MOV 2,AX(4)MOV AX,DX(5)MOV AX,BX+BP(6)MOV AX,SI+DI(7)MOV AH,300(8)MOV SI,DI(9)PUSH AL(10)POP DH(11)MOV CS,AX(12)MOV SS,AX(13)SHL AX,3 答:指令 错误原因(1)INC SI 目的操作数SI类型不明确(2)MOV AX,BL 源操作数和目的操作数类型不一致(3)MOV 2,AX 常数不能作目的操作数(4)MOV AX,DX DX 不能作地址寄存器(5)MOV AX,BX+BP 源操作数寻址

19、方式错,两个寄存器都是基址寄存器(6)MOV AX,SI+DI 源操作数寻址方式错,两个寄存器都是变址寄存器(7)MOV AH,300 300 超出 AH 允许范围(8)MOV SI,DI 源操作数和目的操作数不能同时为内存单元地址(9)PUSH AL 入栈的数据必须是一个 16 或 32 位数据(10)POP DH 出栈的数据是一个 16 或 32 位数据,DH 是 8 位寄存器(11)MOV CS,AX CS 值不能由程序员编程该变(12)MOV SS,AX SS 值不能由程序员编程该变(13)SHL AX,3 移位次数大于 1,应先将移位次数送 CL 5 下列程序段执行后,求 BX 寄存

20、器的内容:MOV CL,5 MOV BX,7D5CH SHR BX,CL 答:(BX)C02DH 6 比较下列两条指令,指出它们的区别 MOV AX,SI MOV SI,AX 答:这两条指令的区别是,指令“MOV AX,SI”是将内存单元 DS:SI中的内容读到 CPU中的寄存器 AX;而指令“MOV SI,AX”是将 CPU 中寄存器 AX 中的内容写入内存单元DS:SI。7 比较下列两条指令,指出它们的区别 MOV AX,SI LEA AX,SI 答:这两条指令的区别是,指令“MOV AX,SI”是将内存单元 DS:SI中的内容读到 CPU中的寄存器 AX;而指令“LEA AX,SI”是将

21、内存单元 DS:SI的偏移地址送到 AX。8 假定(AX)=12345678H,不用计算,写出下面每条指令执行后(AX)=?(1)TEST AX,1(2)XOR AX,AX(3)SUB AX,AX(4)CMP AX,87654321H 答:(1)(AX)=12345678H (2)0 (3)0 (4)(AX)=12345678H 9 假定(AX)=1234H,(BX)=5678H 指出下列指令中 哪些指令执行后,源操作数和目的操作数都不发生变化?哪些指令执行后,源操作数和目的操作数都发生变化?哪些指令执行后,源操作数不发生变化而目的操作数发生变化?指令:TEST AX,1234 AND AX,

22、BX SUB AX,1234H CMP AX,1234H XCHG AX,BX 答:指令“TEST AX,1234”和指令“CMP AX,1234H”执行后,源操作数和目的操作数都不发生变化。指令“XCHG AX,BX”执行后,源操作数和目的操作数都发生变化。指令“AND AX,BX”和“SUB AX,1234H”执行后,源操作数不发生变化而目的操作数发生变化。10 在已学的指令中,可实现累加器清 0 的单条指令有哪些?比较它们的功能。答:共有以下四种方法:(1)MOV AX,0 ;仅将累加器清 0,不会影响任何标志位(2)SUB AX,AX ;累加器清 0 的同时影响所有状态标志,具体地有:

23、;ZF、PF 置 1,CF、AF、SF、OF 均清 0(3)AND AX,0 ;将累加器清 0,ZF、PF 置 1,CF、OF、SF 清 0(4)XOR AX,AX ;将累加器清 0,ZF、PF 置 1,CF、OF、SF 清 0 11 已 知 DS=2000H,有 关 的 内 存 单 元 值 为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号 COUNT 的偏移地址为 1200H

24、。执行下列指令后,寄存器 AX、BX、SI 的值分别是多少?MOV BX,OFFSET COUNT MOV SI,BX MOV AX,COUNTSIBX 答:执行结果为 BX=1200H,SI=1000H,AX=3040H。12 设标志寄存器值原为 0401H,AX=3272H,BX=42A2H。执行指令 SBB AL,BH 之后,AX 和标志寄存器的值分别是多少?答:由标志寄存器的原值 0401H 可知,CF的原值为 1,故指令执行之后 AX=322FH,标志寄存器的值为 0410H,即 AF 变为 1,CF 变为 0,其余不变。13 字节扩展指令和字扩展指令用在什么场合,举例说明?8086

25、 的除法要求被除数的位数为除数的 2 倍,即字节除法要求被除数为 16 位,字相除时要求被除数为 32 位。如果被除数不满足此要求时,对于无符号数,将高位补零即可,对于无符号数,不能简单的将被除数高位填 0,必须按照被除数的符号来扩展。8086 专门提供了符号扩展指令 CWD 和 CBW 方便用户扩展。14 设若内存单元 DATA 在数据段中偏移量为 24C0H 处,24C0H24C3H 单元中依次存放着 55H、66H、77H、88H。下列几条指令执行后,寄存器 AX、BX、CL、SI、DS 的值分别是多少?MOV AX,DATA LEA SI,DATA MOV CL,SI LDS BX,D

26、ATA 答:执行结果为 AX=6655H,BX=6655H,CL=55H,SI=24C0H,DS=8877H。15 若 AX=26D3H,CX=7908H,CF=1,执行下列指令后,寄存器 AX、CX 的值分别是多少?CF=?OF=?SAL CH,1 RCR AX,CL ROL AL,1 答:执行结果为 AX=0A64CH,CX=0F208H,CF=OF=0。16 分析下列程序段:LEA DI,STRING MOV CX,200 CLD MOV AL,20H REPZ SCASB JNZ FOUND JMP NOT_FOUND 问:转移到 FOUND 的条件。答:在 STRING 缓冲区中,找

27、到第一个非空格字符时转到 FOUND。17 设 DS=4500H,AX=0508H,BX=4000H,SI=0320H。当 8086CPU 在最小组态下执行指令 MOV BXSI0100H,AX 时,各控制信号 M/IO、DT/R、RD、WR在有效期间的状态分别是什么?数据总线和地址总线上的数分别是多少?答:各控制信号 M/IO、DT/R、RD、WR在有效期间的电平分别是:高、高、高、低。数据总线上的数是 0508H,地址总线上的地址是 49420H。18 阅读下面的程序段后回答问题(1)执行下面的程序段后,AX 的内容是(),BX 的内容是().M1 DB 12H,34H MOV SI,OF

28、FSET M1 MOV AX,0 MOV AL,SI MOV BX,WORD PTR SI (2)执行下列指令后 AL 内容是().MOV AL,08H ADD AL,09H(3)执行下面的程序段后,AX 的内容是(),BX 的内容是().MOV AX,1234H MOV BX,5678H PUSH AX PUSH BX POP AX POP BX(4)执行下面的程序段后,AL 的内容是(),BL 的内容是().MOV AL,20H TEST AL,80H JNZ DO1 MOV BL,0 JMP DO2 DO1:MOV BL,1 DO2:HLT 答:(1)(AL)=12H,(BX)=3412

29、H(2)(AL)=11H(3)(AX)=5678H,(BX)=1234H(4)(AL)=80H,(BL)=0 19 两个非组合 BCD 数(BY0,BY1)进行十进制减法,并将差求绝对值后保存在 SD 单元。补完程序。MOV AL,BY0 CMP AL,BY1 JNC L1 MOV AH,BY1 MOV BY1,AL MOV AL,AH L1:SUB AL,BY1 ()MOV SD,AL 答:AAS。AAS 指令用于对两个分离的 BCD 数相减的结果(在 AL 中)进行调整,得到一个有效的分离 BCD 数差,结果仍放在 AL 中 20 已知有程序段如下:MOV AL,35H MOV DL,AL

30、 AND DL,0FH AND AL,0F0H MOV CL,4 SHR AL,CL MOV BL,10 MUL BL ADD AL,DL 执行之后,AL 等于多少?该程序段完成了什么功能?答:程序段执行后 AL=23H。该程序段实现了将 AL 中的 1 个组合 BCD 码转换为十六进制数并存回 AL 中的功能。21 以 HEX 为首址的字节单元处存放着一串 ASCII 字符:“0123456789ABCDEF”,并有程序段如下:MOV BX,OFFSET HEX LEA DI,HCOD INC DI STD MOV AL,5CH MOV AH,AL AND AL,0FH XLAT HEX S

31、TOSB MOV AL,AH MOV CL,4 SHR AL,CL XLAT HEX STOSB 上述程序段执行后,字节单元 HCOD 及其相邻单元 HCOD1 的内容是多少?该程序段的功能是什么?答:程序段执行后,HCOD 单元的内容是5,HCOD+1 单元的内容是C。该程序段将 AL 中存放的 1 字节十六进制数转换为 2 个对应的 ASCII 字符存放在 HCOD 及其相邻单元 HCOD1 中。(四)习题四解答(四)习题四解答 1 什么是汇编语言?它和机器语言及高级语言有何区别?答:计算机程序设计语言分为三个层次:机器语言,汇编语言和高级语言。机器语言是用 0 和 1 的二进制串表示机器

32、指令代码的语言。不同的 CPU,机器语言是不同的。由于机器语言指令很难记,程序员用机器语言只在计算机诞生的早期出现过。汇编语言用一些助记符来代替机器语言指令代码,与机器语言指令代码是一一对应的,因此也是面向机器的。助记符是帮助人们记忆的符号,方便程序员进行编程。汇编语言程序设计一般用于对硬件的控制,编程效率较低,但设计出的程序工作效率较高。高级语言接近自然语言,容易学习,编程效率较高。2 汇编语言程序一般包括了哪些段?如何定义这些段?答:8086 汇编源程序中可以定义四种段,即:数据段、附加段、堆栈段和代码段。每种段都可以定义一个或多个。其中数据段、附加段用来定义数据、分配存储单元,堆栈段专门

33、用于保存参数、断点等信息,代码段则用来存放指令。当程序需要设置一个段的时候,就必须首先使用段定义伪指令。它的格式为 段名 SEGMENT 定位类型组合类型类别名 (语句);程序和数据 段名 ENDS 每个段都以 SEGMENT 伪指令开始,以 ENDS 伪指令结束。3 什么是伪指令?它和指令有何区别?答:伪指令语句是用于指示汇编程序如何汇编源程序,例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命

34、令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。4 判断以下说法是否正确,如有错,请说明原因并改正。(1)伪指令在汇编过程中不会产生二进制代码。(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。答:(1)正确。(2)错误。宏不能精简目标代码。(3)错误。高级语言程序经编译或解释后直接转换为目标代码。(

35、4)正确。-2-5 若数据段中有定义 NUM1 EQU 23H NUM2 DW 0 则指令 MOV NUM2,NUM1 的源、目操作数的寻址方式以及指令执行后 NUM21单元的内容分别是什么?答:指令 MOV NUM2,NUM1 的源操作数使用立即数寻址,目的操作数使用直接寻址。指令执行后 NUM21 单元的内容是 0。6 设 DS=6000H,BX=8432H,SS=5000H,SP=3258H,内存 69632H69635H 单元的内容依次是 00H、11H、22H、33H。4 字节指令 CALL DWORD PTR BX+1200H 本身位于 2000H:3250H 处的双字单元中。当

36、8086 执行该指令后转移至子程序入口时,CS、IP、SS、SP 各寄存器以及栈顶 2 个字单元的内容分别是多少?答:执行结果为 CS=3322H,IP=1100H,SS=5000H,SP=3254H,栈顶的两个字即断点地址,为 2000H:3254H。7 已知某数据段从物理地址 03000H 处开始,定义如下:DSEG SEGMENT ORG 2000H A1 DD 2 DUP(7,1,?)A2 DB 10 DUP(0,4,3 DUP(2),5)CNT EQU 20H A3 DW 100 DUP(?)DSEG ENDS 请分别用分析运算符 SEG、OFFSET、LENGTH、SIZE、TYP

37、E 求出 A1、A2、A3 的段基址、偏移量、类型及它们的 LENGTH、SIZE。答:(SEG A1)=0300H,(OFFSET A1)=2000H,(TYPE A1)=4,(LENGTH A1)=2,(SIZE A1)=24=8;(SEG A2)=0300H,(OFFSET A2)=2018H,(TYPE A2)=1,(LENGTH A2)=10,(SIZE A2)=101=60;(SEG A3)=0300H,(OFFSET A3)=2054H,(TYPE A3)=2,(LENGTH A3)=100,(SIZE A3)=1002=200 8 阅读下面的程序,回答问题 DATA SEGME

38、NT BUF DB 1234 N=$-BUF BCD DB N DUP(?)DATA ENDS -3-CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,SI SUB AL,30H MOV DI,AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START(1)画出内存分配图。(2)说明程序功能,程序执行后,从 BCD 开始的 N 个字节单元

39、中的内容是什么?(3)找出一条指令代替指令“SUB AL,30H”,使程序功能不变。(4)如果将代码段中的指令 LEA DI,BCD+N-1 改成 LEA DI,BCD;DEC DI 改成 INC DI,其它指令不变,程序执行后,从 BCD 开始的 N 个字节单元中的内容是什么?(5)取消数据段的 BCD 存储区,将处理后的数据放回原处,应如何修改程序?答:(1)变量 值 EA BUF 31H 0 32H 1 33H 2 34H 3 BCD-4 -5 -6 -7 (2)程序功能是将从 BUF 开始的连续 4 个字符1234转变为 4 个对应的数值,按逆序存放到以变量 BCD 为首地址的存储单元

40、中。程序执行后,从 BCD 开始的 N 个字节单元中的内容是 4 3 2 1。-4-(3)用指令“AND AL,0FH”代替指令“SUB AL,30H”,程序功能不变。(4)如果将代码段中的指令 LEA DI,BCD+N-1 改成 LEA DI,BCD;DEC DI 改成 INC DI,其它指令不变,程序执行后,从 BCD 开始的 N 个字节单元中的内容是 1 2 3 4。(5)取消数据段的 BCD 存储区,将经处理后的数据放回原处,修改程序如下 DATA SEGMENT BUF DB 1234 N=$-BUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:

41、DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N 下面的程序段中有 2LOOP1:MOV AL,SI SUB AL,30H MOV SI,AL INC SI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 9 条转移指令,计算它们的相对位移量并填在空缺的机器代码处。1000:001B F3A6 REPZ CMPSB 1000:001D 75 01 JNZ 0020 1000:001F CB SAME:RET 1000:0020 41 FOUND:INC CX 1000:002

42、1 890E0600 MOV 0006,CX 1000:0025 EB F8 JMP 001F 答:两处空缺的机器码分别为 01H、0F8H。简析:JNZ 指令采用相对寻址方式,本题程序中 JNZ 的目标地址是同一段中偏移量为0020H 处,当前 IP=001FH,故有:相对偏移量=目标地址当前 IP 值=01H。JMP 指令有多种寻址方式,本题程序中的 JMP 为段内直接跳转,也采用相对寻址方式。因当前 IP=0027H,目标地址为 001FH,因此有:相对偏移量=目标地址当前 IP 值=0F8H(8 的补码)。变量值 EA BUF31H 0 32H 1 33H 2 34H 3 BCD1 4

43、 2 5 3 6 4 7 -5-10 阅读下面的程序,填空。从 BUF 开始的 11 个单元中存放着 11 个整数,找出这 11个数中正数并且是偶数的个数存入 R 中。DATA SEGMENT BUF DB 2,5,-3,6,100,0,-20,-9,8,-110,21 N=R DW?DATA ENDS CODE SEGMENT BEGIN:MOV AX,DATA LEA BX,BUF MOV CX,N LOPA:CMP BX,BYTE PTR 0 TEST BX,BYTE PTR 1 INC AX NEXT:INC BX DEC CX MOV R,AX MOV AH,4CH INT 21H

44、CODE ENDS END 答:$-BUF ASSUME CS:CODE,DS:DATA MOV DS,AX MOV AX,0 JLE NEXT JNZ NEXT JNZ LOPA BEGIN 11 读下面程序,在其中的空处添上适当内容。该程序完成了什么功能?程序运行后,变量 RS 的值是多少?-6-DATA SEGMENT BUF DB -13,24,5,-62,77,20,-7,145,0 CNT DB$-BUF RS DB 0 DATA ENDS STACK SEGMENT PARA STACKSTACK DB 256 DUP(?)STACK ENDS CODE SEGMENT ASSU

45、ME DS:DATA,SS:STACK,CS:CODE START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CH,0 MOV CL,LP:MOV AL,BX TEST AL,80H JE CONT INC RS CONT:INC BX LOOP LP RET START ENDP CODE ENDS END START 答:程序空处可填 CNT,字节变量 RS 的最后结果是 04H。该程序实现的功能是:统计数据段中以 BUF 为首址的带符号字节数据表中负数的个数,CNT 为表中所有数据的个数,

46、即表的长度。需要注意的是:十进制数据“145”在以二进制带符号字节数据形式存放时相当于“111”。12 已知在 BUF 的起始处保存有 N 个字符的 ASCII 码,编写汇编语言程序实现,将这组字符串传送到缓冲区 BUFR 中,并且使字符串的顺序与原来的顺序相反。答:要传送的字符串有 30 个。N=30 -7-STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORD STACK ENDS DATA SEGMENT ASC1 DB abcdefghijklmnopqrstuvwxyz1234 ASC2 DB 30 DUP(?)DATA ENDS

47、 CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV CX,N LEA SI,ASC1 ADD SI,CX LEA DI,ASC2 L1:DEC SI MOV AL,SI MOV DI,AL INC DI LOOP L1 MOV AH,4CH ;返回 DOS MOV AL,0 INT 21H CODE ENDS END START 13 编写一个完整的源程序,将数据 35、-27、-13、6

48、、-47、52、9、-3 中的正数放入以 BUFFER 为首址的数据缓冲区中。答:一种可能的程序如下实现:DATA SEGMENT BLOCK DB 35,27,13,6,47,52,9,3 COUNT EQU$BLOCK BUFFER DB COUNT DUP(?)-8-DATA ENDS STACK SEGMENT PARA STACKSTACK DW 40 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX MOV ES,AX ;需用 STOS

49、串操作指令 MOV CX,COUNT LEA SI,BLOCK ;源数据区指针 LEA DI,BUFFER ;正数存放区指针 CLD ;自动增量 AGAIN:LODSB ;取源数据,并修改 SI TEST AL,80H ;取符号位,不影响 AL JS GO ;符号位=1,是负数,不存 STOSB ;存正数并修改 DI GO:LOOP AGAIN MOV AH,4CH ;退出循环,返回 DOS INT 21H CODE ENDS END BEGIN 14 已知有一个长 100 个字的数据块,存放在以 3DA0H:1000H 开始的存储区域内。试编写一个完整的汇编语言程序,将该数据块复制到以 3D

50、A0H:1008H 开始的存储区内。答:一种可能的程序如下实现:DATA SEGMENT AT 3DA0H ORG 1000H BLOCK DW 104 DUP(?)DATA ENDS SSEG SEGMENT PARA STACKSSEG DB 100 DUP(?)SSEG ENDS CODE SEGMENT ASSUME CS:CODE,SS:SSEG,DS:DATA,ES:DATA MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX -9-MOV AX,SEG BLOCK MOV DS,AX MOV ES,AX MOV CX,200 ;重复次数 LEA SI,B

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

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁