1、习题讲解,第 1 章,重点掌握内容:1计算机中常用数制(二进制、八进制、十进制、十六进制)的表示方法及相互之间的转换。2计算机中对带符号数采用的原码、反码、补码的表示方法及相互之间的转换。3计算机中定点数和浮点数的表示方式。4计算机中基本的信息编码方式(如ASCII码、BCD码)的特点和相互之间的转换。5微型计算机系统的总线结构及主要性能指标。6. 微处理器的组成结构及工作原理。,7几个重要概念:微处理器、单片机、单板机、微型计算机、微型计算机系统、嵌入式系统位,字节,字,指令,指令系统,程序,操作码,地址码(操作数),总线,了解内容:1计算机的发展与分类。2. 微型计算机的特点和应用。3.
2、高档微机中采用的先进计算机技术。4现代微机系统的组成结构。,习题较简单,注意第6题,浮点数的表示方法。,重点掌握内容:1微处理器的主要性能指标。,2Intel 8086微处理器的基本结构,包括:功能结构、寄存器结构和总线结构,3Intel 8086微处理器系统的组成:控制核心单元存储器组织I/O端口组织,4Intel 8086微处理器在最小模式下的典型总线操作和时序。,5几个重要概念:时钟周期,总线周期,指令周期,第 2 章,了解内容:1Intel 8088微处理器与Intel 8086微处理器的不同之处。2Intel 8086微处理器在最大工作模式下的典型总线操作和时序。3高档微处理器的体系
3、结构与特点。,2.1 考查基本概念,2.3 考查8086CPU功能结构,2.4 考查标志寄存器各位含义,2.7 有一个由20个字组成的数据区,其起始地址为610AH:1CE7H。试写出该数据区首末单元的实际地址PA。,PA = 段地址 4 + 偏移地址= 610AH 4 + 1CE7H= 610A0H + 1CE7H= 62D87H 20个字,末地址为62D87H+27H(39D)=62DAEH,2.8 若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H。试问该程序段启动执行指令的实际地址是多少?,PA = 段地址 4 + 偏移地址= 97F0H 4 + 1B40H= 97F
4、00H + 1B40H= 99A40H,2.13 有一个32位的地址指针67ABH:2D34H存放在从00230H开始的存储器中,试画出它们的存放示意图。,2.13将下列字符串的ASCII码依次存入从00330H开始的字节单元中,试画出它们的存放示意图: UESTC (为空格符),2.15 存储器中每一个段最多为64KB,当某程序routadf运行后,用DEBUG命令显示出当前各寄存器的内容如下,画出此时存储器分段的示意图。,AX=0000 BX=0000 CX=006D DX=0000 SP=00C8 BP=0000 SI=0000 DI=0000 DS=11A7 ES=11A7 SS=21
5、BE CS=31B8 IP=0000,11A70H,21BE0H,21CA8H,31B80H,2.16已知(SS)=20A0H,(SP)=0032H 欲将(CS)=0A5BH, (IP)=0012H, (AX)=0FF42H, (SI)=537AH, (BL)=5CH依次推入堆栈保存。 (1)画出堆栈存放示意图 (2)入栈完毕时SS和SP的值,SS=20A0H SP=0028H,重点掌握内容:18086的指令格式及寻址方式。28086的常用指令。38086指令前缀的使用。,了解内容:180286及以上CPU的寻址方式。280286及以上CPU扩充的指令。,第 3 章,3.5已知DS=2000H
6、,有关的内存单元值为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT的偏移地址为1200H。执行下列指令后,寄存器AX、BX、SI的值分别是多少? MOV BX,OFFSET COUNT MOV SI,BX MOV AX,COUNTSIBX,BX=1200H 20000H+1200H=21200H,SI=1000H 1000H+1200H+1200H=3400H 200
7、00H+3400H=23400H AX=3040H,3.7设若标志寄存器原值为0A11H,SP=0060H,AL=4。下列几条指令执行后,标志寄存器、AX、SP的值分别是多少?PUSHF LAHF XCHG AH,AL PUSH AX SAHF POPF,SP-2=005EH FLAG(L)-AH=11H AH=04H,AL=11H,AX=0411H SP-2=005CH AH=04H-FLAG(L),FLAG=0A04H SP+2=005EH,FLAG=0411H,3.8设若内存单元DATA在数据段中偏移量为24C0H处,24C0H24C3H单元中依次存放着55H、66H、77H、88H。下
8、列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少? MOV AX,DATA LEA SI,DATA MOV CL,SI LDS BX,DATA,AX=6655H SI=24C0H CL=55H BX=6655H DS=8877H,3.12已知有某字串BUF1的首址为0000H,BUF2的首址为0010H,数据段与附加段重合。欲从BUF1处开始将10个字数据顺序传送至BUF2处,试在下面程序段的空白处填上适当的指令或操作数以实现上述功能。 LEA SI,BUF1 ADD SI, LEA DI,BUF2 ADD DI,18 STD MOV CX, REP MOVSW,18,10,
9、3.13附加段中有某字符串首址为BLOCK,长17个字节。欲查找其中第一次出现字符“e”的位置,并将该位置所在的偏移量入栈保护。试在下面程序段的空白处填上适当的指令或操作数以实现上述功能。 MOV DI, MOV AL,CLDSCASB JNE OTHER DEC DIOTHER:(略),OFFSET BLOCK,e,MOV CX,17,REPNE,PUSH DI,3.15已知有程序段如下: MOV AL,35H MOV DL,AL AND DL,0FH 取低4位 AND AL,0F0H 取高4位 MOV CL,4 SHR AL,CL 右移4位 MOV BL,10 MUL BL 十位数乘以10
10、 ADD AL,DL 执行之后,AL等于多少?该程序段完成了什么功能?,程序段执行后AL=23H。该程序段实现了将AL中的1个组合BCD码转换为十六进制数并存回AL中的功能。,3.16以HEX为首址的字节单元处存放着一串ASCII字符:“0123456789ABCDEF”,并有程序段如下: MOV BX,OFFSET HEX LEA DI,HCOD INC DI STD MOV AL,5CH MOV AH,AL AND AL,0FH XLAT HEX STOSB MOV AL,AH MOV CL,4 SHR AL,CL XLAT HEX STOSB 上述程序段执行后,字节单元HCOD及其相邻单
11、元HCOD1的内容是多少?该程序段的功能是什么?,HEX偏移地址赋给BX HCOD偏移地址赋给DI INC DI DF=1,指针递减 MOV AL,5CH AH=5CH AL=0CH 查表,AL=0CH AL-HCOD+1=0CH,DI减1 AL=5CH右移4位,AL=05H 查表,AL=05H AL-HCOD=05H,DI减1,该程序段将AL中存放的1字节十六进制数转换为2个对应的ASCII字符存放在HCOD及其相邻单元HCOD1中。,3.17有程序段如下: MOV AL,DB1 MOV AH,0 MOV DL,10 L1:DIV DL MOV BL,AH MOV BH,0 PUSH BX
12、MOV AH,0 CMP AL,0 JNZ L1 若内存单元DB1的值为7BH,则程序将依次向堆栈压入哪些数据?该程序段实现了什么功能?,007BH(123)除以10,商0CH放AL,余数3放AH3压入堆栈若商不为零,则跳转至L1,先后存入堆栈中的字数据依次是3、2、1。该程序段实现了将一个字节的无符号十六进制数DB1转换为非组合BCD码存入堆栈的功能,堆栈中最先压入的是十进制数的个位(每个十进制位在堆栈中占1个字单元)。,重点掌握内容:1汇编语言源程序的基本结构。2常用伪指令。3各种结构形式的汇编语言程序、子程序的设计及常用的DOS功能调用方法。4 汇编语言上机调试方法。5几个重要概念:汇编
13、语言,汇编语言源程序,目标程序,汇编程序,链接程序。,了解内容:1汇编语言与高级语言的接口。,第 4 章,4.4 设DS=6000H,BX=8432H,SS=5000H,SP=3258H,内存69632H69635H单元的内容依次是00H、11H、22H、33H。 4字节指令 CALL DWORD PTR BX+1200H 本身位于2000H:3250H处的双字单元中。当8086执行该指令后转移至子程序入口时,CS、IP、SS、SP各寄存器以及栈顶2个字单元的内容分别是多少?,8432H+1200H=9632H IP=1100H CS=3322H SS=5000H SP=3258H-4=325
14、4H 栈顶的两个字为断点地址2000H:3254H,程序分析和编制题,请结合模拟器认真仔细分析。,期中自测题,一、选择题(每空1分,共20分) 1. 下列8086指令中,()的目的操作数采用直接寻址方式,执行时至少需要()个总线周期。 AADD 2000H, AX BXOR AX, 2000H CMOV SI, 2000H DOUT DX,AL A1 B2 C3 D4 2. 下面对“堆栈”最好的解释是( )。 A内存中固定地址的一块区域 B按“后进先出”原则组织的存储区域 C必须按字操作访问的内存区域 D遵循“向上”增长原则的存储区域 3. 8086系统中,若要使寄存器AL中的高4位不变,低4
15、位为1,可用( )指令。 AAND AL, 0FH BAND AL, 0F0H COR AL, 0FH DOR AL, 0F0H,4.CPU中标志寄存器的主要作用是( )。 A. 检查当前指令的错误 B. 根据当前指令执行结果决定是否停机 C. 纠正当前指令的错误 D. 产生影响或控制某些后续指令所需的标志 5.PC机中,带符号数通常用( )形式表示。 A补码 BBCD码 C反码 D原码 6.若当前(SS)= 2000H,(SP)=0FFH,(AX)=2107H,则执行指令 PUSH AX 后,存放数据 21H的物理地址是( )H。 A200FD B200FE C200FF D20100 7.
16、执行时不一定会改变正常IP值的指令是( )。 ACALL SUB BRET CJE NXT DINT 2 8.8086CPU的AD复用线可在总线周期( )时刻分离地址信号。 T1 B. T2 C. T3 D. T4 9. 计算机硬件能直接执行的是( )语言。 A. 机器 B.符号 C. 汇编 D. 机器和汇编 10.8086CPU在比较带符号数大小时应根据( )标志位来判别。 A. ZF、OF和PF B. CF、SF和ZF C. ZF、OF和SF D. AF、SF和PF,12某系统总线时序如下图所示,可知系统最大寻址空间为( ); 数据线D0-7上传送的是()信息。, A. 16KB B. 3
17、2KB C. 64KB D. 128KB A. 写入到存储器的 B. 写入到端口的 C. 从存储器读出的 D. 从端口读出的,13. 8086CPU最多可访问( )个字节I/O端口。 A. 512 B. 1024 C. 64K D. 1M 14. 8086执行两个补码数的加法时,对产生溢出的正确叙述为( )。 A. 最高位有进位则产生溢出 B. 和的符号位为0则产生溢出 C. 和的符号位为1则产生溢出 D. 若两个加数符号位相同、但与和的符号位相反,则溢出 15. 微机系统中,地址锁存器输出信号的特性是( )。 A. 单向双态 B. 单向三态 C. 双向双态 D. 双向三态 16. 8086C
18、PU采用存储器分段组织是因为( )。 A. 计算机内存一般为64KB的整数倍 B. 便于与8位机64KB访问空间兼容 C. 8086CPU内部寄存器为16位结构 D. CPU分为EU和BIU两部分 17. 8086CPU有最大和最小两种工作模式,最大模式的特点是( ) A. 需要总线控制器8288 B. 由编程进行模式设定 C. 不需要8286收发器 D. CPU提供所有信号 18. 8086CPU每取出一个指令字节后寄存器IP的值应该( )。 A. 自动加1 B. 自动加2 C. 自动清0 D. 自动置1,二、填空题(前2题每空2分,其余每空1分,共40分) 1.8086CPU系统中,逻辑地
19、址的含义是 ,物理地址的含义是 ,二者之间的关系是 。 2.8086CPU内部分为EU和BIU两部分的主要目的是 。 3.若用16位二进制表示一个带符号数原码,其最小值为 ,最大值为 ;若用16位二进制表示一个带符号数补码,其最小值为 ,最大值为 ;若用16位二进制表示一个组合BCD码,其最小值为 ,最大值为 ;(结果用十进制表示) 4.8086CPU系统中,若AX=6831H,BX=4D2AH,则CMP AX,BX指令执行后,AX= H,BX= H,SF= ,ZF= ,OF= ,CF= ,AF= ,PF= 。 5.8086 CPU复位后,(AX)= H,(DS)= H,第一条可执行指令的物理
20、地址是 H。,6. 8086系统中,指令涉及的操作数可存放于 、 或 _ 中。 7. 调用(主)程序与子程序之间的参数传递通常有堆栈法、 、 、 等四种方法。 8. 8086系统中典型的总线操作周期由 个时钟周斯构成,若必要可通过 信号在T 状态和T 状态之间插入TW状态。 9. 若X补=007AH,Y补=0F08CH,则X+Y补= H,X-Y补= H。 10. 为了在保持精度的同时扩大表示范围,PC系统中常采用浮点格式,即用 、 和 三部分来表示数据。,三、读写程序(共40分) 1.(6分)下面是某8086程序汇编后得到的列表文件(.LST)的一部分(从左到右:最左边一列是指令存放地址,第二
21、列为指令机器码,右边是汇编源代码)。 0000:3000 BB0020 MOV BX,2000H 0000:3003 B8FFFF MOV AX, 0FFFFH 0000:3006 B97F00 MOV CX, 0080H 0000:3009 8907 L1: MOV BX,AX 0000:300B 43 INC BX 0000:300C 43 INC BX 0000:300D E2FA LOOP L1 A类课程学生选做 (4分)该程序段位于内存的起始物理地址是多少?代码长度是多少字节? (2分)该程序段完成的是什么功能?程序中为什么有两行INC BX? B类课程学生选做 (3分)该程序段完成
22、的是什么功能?程序中为什么有两行INC BX? (3分)程序执行完后寄存器AX、BX、CX的值分别为多少?,2.(6分)阅读下列程序段,画出对应的流程图,并说明什么情况下(AH)0。 IN AL,5FH TEST AL,80H JZ BR1 MOV AH,0 JMP BR2 BR1: MOV AH,0FFH BR2: ,3.(6分)请使用8086宏汇编语言定义如下数据段: A类课程学生选做 在数据段中偏移量为100H处的单元里定义字变量VARW; 接着保留10个字节单元,并初始化为0; 接着存放字符串“1234”; 接着定义常量LEN,其值为该数据段中已定义数据的长度(字节数)。 B类课程学生
23、选做 定义字变量VARW; 接着存放字符串“1234”; 接着定义常量LEN,其值为前面字符串的长度(字节数)。,4.(10分)编写程序段,从200H号端口输入100个字节数据并依次存放在数据段200H地址开始的单元中。,5.(12分)编写完整的8086汇编源程序:在数据段中存放有字符串STRING,要求搜索串中所有的字符组合AB,并将字符组合出现的次数存入数据段中的SUM单元中。,GOOD LUCK! _ _,期中考试 11月7日上午9:0011:00 A、B类课程用同一份试卷,不同类别学生选作不同的题目,部分自测题答案,2.(6分)阅读下列程序段,画出对应的流程图,并说明什么情况下(AH)
24、0。 IN AL,5FH TEST AL,80H JZ BR1 MOV AH,0 JMP BR2 BR1: MOV AH,0FFH BR2: ,;从5FH端口读取一个字节存入AL,;判断最高位是否为1,即判断是否为负数,;Z=1即结果为零即最高位为零即为正数,则跳转,;Z不为1及最高位为1即为负数,则AH=0,3.(6分)请使用8086宏汇编语言定义如下数据段: A类课程学生选做 在数据段中偏移量为100H处的单元里定义字变量VARW; 接着保留10个字节单元,并初始化为0; 接着存放字符串“1234”; 接着定义常量LEN,其值为该数据段中已定义数据的长度(字节数)。,DATA SEGMEN
25、T ORG 0100H VARW DW ? DB 10 DUP(0) DB 1234 LEN EQU $-VARW DATA ENDS,4.(10分)编写程序段,从200H号端口输入100个字节数据并依次存放在数据段200H地址开始的单元中。,MOV DI, 200H ;初始化MOV CX, 100 CLD MOV DX, 200H AGN:IN AL, DX;输入数据 STOSB ;存放数据 LOOP AGN ;循环控制,5.(12分)编写完整的8086汇编源程序:在数据段中存放有字符串STRING,要求搜索串中所有的字符组合AB,并将字符组合出现的次数存入数据段中的SUM单元中。,DATA
26、 SEGMENT ;数据定义(3分)STRING DB ?,?,?,COUNT EQU $-STRINGKEY DB ABSUM DB ? DATA ENDS,CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AXRET CODE ENDS,MOV SI,OFFSET STRING;循环初始化 MOV CX, COUNTMOV AX, KEY AGN:CMP AX, SI ;比较JNE NXTINC NUM ;计数 NXT: INC SI LOOP AGN,