1、要点总结第二章 微型计算机结构18086 的段式存储结构段地址+ 偏移量地址= 存储单元的物理地址或者,段寄存器的值*16+偏移地址= 存储单元的物理地址2段寄存器,通用寄存器 ,指针与变址寄存器,标志寄存器3寻址方式(1)寻址方式的概念(2)寻址方式的分类(3)各寻址方式中对于寄存器的限制(4)各类寻址方式的格式第三章 汇编语言(参照课件)1汇编语句格式: 标号 操作符 操作数 ;注释2标号的概念以及其三个属性3伪指令:(1)符号定义伪指令:EQU(2)数据定义伪指令:DB,DW(3)段定义伪指令:SEGMENT、ENDS、ASSUME4、运算符(1)分析算符:SEG,,OFFSET ,SI
2、ZE, LENGTH(2)组合算符:PTR5指令语句与伪指令语句的区别6数据段、堆栈段、代码段的用途第四章 指令及汇编程序设计1数据传送指令:MOV、PUSH、POP、XCHG、XLAT 2算数运算指令:ADD、ADC、INC、SUB、SBB、DEC、NEG 、3逻辑运算指令:CMP、TEST、OR、AND、NOT、XOR4移位指令:逻辑左移/右移,算数左移/右移,循环左移/右移,带进位的循环左移/右移;以及移位指令对于 CF、OF 标志位的影响分支结构程序设计1无条件转移指令2有条件的转移指令(教材 P102)3分支程序编写循环结构程序设计1循环控制指令 LOOP、LOOPE/Z 、LOOP
3、NE/NZ 以及他们的控制条件(对 CF、ZF 的判断)2循环程序编写子程序设计1子程序定义伪指令、调用指令、返回指令2子程序设计中对于堆栈操作的要求第五章 输入与输出中断1中断向量表、中断向量的概念2中断向量的修改3中断的类型:软件中断、可屏蔽硬件中断、非屏蔽硬件中断;以及 CPU 队可屏蔽硬件中断和非屏蔽硬件中断的不同的响应条件48259 的基本结构和工作原理58259 的操作命令字:包括各个命令字的作用、格式、具体的操作6软件中断与硬件中断的异同点第六章 8254 程序设计18254 的基本结构和工作原理28254 的命令字格式,以及对于 8254 各个计数器工作方式的设定8255 程序
4、设计18255 的基本结构和工作原理28255 的命令字格式,以及对于 8255 各端口的操作16550异步串行通信中,波特率的概念,数据帧的概念第七章 简单外设LED 的显示原理键盘的结构及扫描原理一些复习题习题一一、选择题1、 8086CPU 中程序计数器 IP 中存放的是 。A、指令 B、指令在现行代码段中的偏移地址C、操作数 D、操作数在现行代码段中的偏移地址2、Intel8086CPU 内部的两大功能部件是 。A、标志寄存器及 ALU B、BIU 及 EUC、指令队列及 AIU D、地址加法器及 ALU3、8086CPU 有 20 根地址线,直接寻址内存的空间为 。A、64MB B、
5、1MBC、4MB D、8MB4、Intel8086 堆栈是按 原则构造的。A、先进先出 B、后进后出C、先进后出 D、随机存取5、微型计算机主存储器的基本编址单元的长度是 。A、64 位 B、32 位C、16 位 D、8 位6、为使 CPU 识别不同的内存单元,需要为每个内存单元规定不同的 。A、符号 B、地址C、数据 D、状态7、指令指针 IP 与 组合使用,确定下一条指令存放单元的物理地址。A、CS B、ESC、SS D、DS8、堆栈指针 SP 与 组合使用,确定栈顶单元的物理地址。A、CS B、ESC、SS D、DS9、8086 对内存进行分段管理,一个段的最大范围是 。A、64KB B
6、、128KBC、512MB D、1MB10、8086CPU 用于存放当前数据段段基址的寄存器是 。A、CS B、ESC、SS D、DS11、为数据段基址寄存器 DS 赋值得汇编语句正确的是 。A、ASSUME DS:DATA B、SEGMENT DATAC、MOV DS,DATA D、MOV AX,DATAMOV DS,AX12、下列描述正确的是 B 。A、 汇编语言只由指令语句构成B、 汇编语言语句包括指令语句和伪指令语句C、 指令性语句和伪指令语句的格式是完全相同的D、 指令性语句和伪指令语句都能经过汇编程序翻译成机器代码13、8086/8088 系统中,一个栈可使用的最大空间是 。A、1
7、MB B、由 SP 初值决定C、64KB D、由 SS 初值决定14、若(AL)=10101101B,为了使其内容变为 01011101B,下列哪一种执行一次即可完成此操作?xor al,11110000bA、NOT 指令 B、AND 指令C、XOR 指令 D、OR 指令15、设(SS)=2000H, (SP)=0100H, (AX)=2107H,执行指令 PUSH AX 后,存放数据 21H的物理地址为 。A、20102H B、200FEHC、20101H D、200FFH16、令 DF=1 的指令是 。A、STD B、CLDC、CLC D、STC17、将累加器 AX 的内容清零,错误的指令
8、为 。A、AND AX,0 B、XOR AX,AXC、SUB AX,AX D、CMP AX,AX18、指令 MOVSB 中源串的逻辑地址为 。A、DS:SI B、DS:DIC、DS:DI D、ES:DI19、有指令 MOV AX, 1234H,指令中的立即数 1234H 是存储在_。A.数据段 B.代码段 C.附加段 D.堆栈段20、交换寄存器 SI,DI 的内容,正确的程序段是 。A、 PUSH SI B、PUSH SIPUSH DI PUSH DIPOP SI POP DIPOP DI POP SIC、 MOV AX,SI D、MOV AX,SIMOV DI,SI MOV BX,DIMOV
9、 SI,DI XCHG BX,AX21、假设 ES 段中有一个字符串12FG3LM5C ,其名为 ARRAY,下面程序段CLDLEA DI,ES:ARRAYMOV AL,GMOV CX,9REPNE SCASB执行后,CX 的值为 。A、9 B、5C、4 D、022、下列串操作指令中,在 指令前加重复前缀指令 REP 是没有实际使用价值的。A、MOVSB B、STOSBC、CMPSB D、LODSB23、执行下面的程序段后,AL 中的内容为 。BUF DW 2152H,3416H,5731H,4684H.MOV BX,OFFSET BUFMOV AL,3XLATA、46H B、34HC、16H
10、 D、57H24、在汇编语言程序中,对 END 语句的叙述正确的是( ) 。A、END 语句是一可执行语句B、END 语句表示程序执行到此结束C、END 语句表示源程序到此结束D、END 语句在汇编后要产生机器码25、下面的数据传送指令中,错误的操作是( ) 。A、MOV SS:BX+DI,AXB、MOV DX,1000HC、MOV WORD PTRBX,1000HD、MOV DS,2000H26、伪指令 VAR DD ? 将在内存预留 字节的存储空间。A、1 B、2C、4 D、627、设 X1 和 X2 是用 DB 定义的变量,下列指令中正确的是 。A、MOV X1,20H B、MOV AX
11、,X1C、MOV X1,X2 D、MOV 20H,X228、执行下面的程序段后,AX 中的内容为 。NUM DW ? ,23NAME DW 10 DUP(?)N EQU 6LEN EQU $-NUMMOV AX,LENA、18H B、1CHC、15H D、16H29、已知 VAR DW 1,2,$+2,5,6,若汇编时 VAR 分配的偏移地址是 0010H,汇编后 0014H 单元的内容是 。A、16H B、05HC、14H D、06H二、填空题1、若运算结果为 0,则标志寄存器中零标志位 ZF= 1 。2、写出下列存储器地址的段地址,偏移地址和物理地址。(1)2314:0035 段地址为 ,
12、偏移地址为 ,物理地址为 。3、设 VAL 是在数据段中定义的变量,试指出下列源操作数字段的寻址方式。(1) MOV AX, 03FH (2) MOV AX,BX (3) MOV AX,BX (4) MOV AX,DS:100H (5) MOV AX,ES:BX (6) MOV AX,BX+10 (7) MOV AX,VALBX (8) MOV AX,VALBXSI 4、DIV SRC 执行字节除法时,运算后的商存放在 AL 中,余数存放在 AH 中。5、执行下列执行后,AX 寄存器的值为 1E00H 。TABLE DW 10,20,30,40,50ENTRY DW 3.MOV BX,OFFS
13、ET TABLEADD BX,ENTRYMOV AX,BX6、执行下列指令序列后,BL 寄存器的值为 。MOV CL,3MOV BL,0B3HROL BL,1RCR BL,CL7、设(BX)=0C6H,变量 VAL 中存放的内容为 59H,确定下列各条指令单独执行后,BX 寄存器的值。(1)XOR BX,VAL ;(BX)= (2)AND BX,VAL ;(BX)= (3)OR BX,VAL ;(BX)= 8、判断下列指令是否合法。(1)MOV SI,DI 不合法 不允许同为存储器数据 (2)RCR DX,3 不合法 移位次数超过 1,放到 CL (3)PUSH AL 不合法 16 位 (4)
14、MOV CS,AX 不合法,不允许对 CS 赋值 (5)INC BX 不合法,类型不匹配 INC byte ptrbx (6)MOV AX,DX 不合法,dx 不允许作为间接寻址寄存器 (7)MOV AL,1000 不合法,1000 超出 8 位数据表示的范围 9、汇编语言源程序中表示结束的伪指令是 END 。10、判断下列指令和伪指令的使用是否正确。(1)K1 DW 3412HK2 DB K1 不正确 K1 类型应该为 DW (2)K1 EQU 1234HMOV K1,AX 不正确, K1 不分配内存单元 (3)N EQU 2N EQU N+1 不正确 EQU 不允许对同一标号重复赋值 11
15、已知数据段定义如下:DATA SEGMENTORG 100HBUF DW CD, 1, 3 DUP(4, 2 DUP(8, 6)VRA DB 4AHDATA ENDS单独执行下列语句LEA BX, BUF BX=_0100H_MOV CX, VRA-BUF CX=_0022H_(用十六进制数表示) 。三、简述题1、8086 系统中,设有一个包含 8 个字的数据区,数据区的起始地址为 2100H:2A10H,写出该数据区首末字单元的物理地址。23A10H23A1EH2、从内存地址 34120H,依次存放 3 个数,它们分别是字数据 27H,字节数据 0F1H 和字数据 9145H。请用图表示出这
16、些数在内存的存放情况。34120h 27H34121h 00H34122h 0F1H34123h 45H34124h 91H3、将 AL 与 BX 中的两个无符号数相加,结果放入 AX。XOR AH,AHADD AX,BX4、将 AL 与 BX 中的两个带符号数相加,结果放入 AX。CBWADD AX,BX5、将 AL 的高 4 位与低 4 位分别放入 BH 与 BL 的低 4 位,且将 BH 与 BL 的高 4 位清 0。MOV CH,ALMOV CL,4SHR CH,CLMOV BH,CHAND AL,0FHMOV BL,AL6、用一条逻辑指令将 AX 寄存器清 0。XOR AX,AX7、
17、用一条逻辑指令将 DX 寄存器的高 3 位为 1,其余位不变。OR DX,0E000H8、试编写指令序列,将 DX:AX 中的 32 位无符号数乘以 2,结果仍存放在 DX:AX 中。SHL AX,1RCL DX,19、定义一个数据段 DATASG,并且在该数据段中定义一个有 5 个字节的字节数组 ARRB,其值分别为 34H,12H,45H,26H,25H。DATASG segmentARRB db 34H,12H,45H,26H,25HDATASG ends10、伪指令与指令的本质区别是什么?伪指令是不能够编译成二进制代码,不能够执行,帮助编译器正确识别指令,编译成二进制代码。指令语句能够
18、编译成二进制代码,可以执行。11、编写数据段定义,在段中依次定义以下变量:V1 为字节变量,初值是 90H;V2 为字数组,初值依次为 2341H,9813H,0A213H;V3 为字节型数组,初值为字符串Assembly Language ;V4 为字节数组,有 5 个字节,未定义初值。Data segmentV1 db 90hV2 dw 2341H,9813H,0A213HV3 db Assembly LanguageV4 db 5 dup (?)Data ends12、设数据段定义如下:DATA SG SEGMENTV1 DB 3 DUP(0)V2 DW 4 DUP(0)DATASG E
19、NDS(1) 编写指令序列,将 1634H 存入字节数组 V1 的第 0 个字节和第 1 个字节(可以修改数据段)Mov bx,offset V1Mov word ptrbx,1634H(2) 编写指令序列,将 2AH 存入字数组 V2 的第 0 个字节和第 2 个字节(可以修改数据段) 。Mov si,offset V2Mov byte ptrsi,2AHMov byte ptrsi+2,2AH习题二一、选择题: 1下列叙述正确的是_。 ( )(A) 对两个无符号数进行比较采用 CMP 指令,对两个有符号数比较用 CMPS 指令(B) 对两个无符号数进行比较采用 CMPS 指令,对两个有符号
20、数比较用 CMP 指令(C) 对无符号数条件转移采用 JGE/JNL 指令,对有符号数条件转移用 JAE/JNB 指令(D) 对无符号数条件转移采用 JAE/JNB 指令,对有符号数条件转移用 JGE/JNL 指令2已知 BX=2000H,SI=1234H,则指令 MOV AX,BX+SI+2的源操作数在_中。 ( )(A)数据段中偏移量为 3236H 的字节 (B)附加段中偏移量为 3234H 的字节(C)数据段中偏移量为 3234H 的字节 (D)附加段中偏移量为 3236H 的字节4在下列指令的表示中,不正确的是_。 ( )(A) MOV AL,BX+SI (B) JMP SHORT D
21、ONI(C) DEC BX (D) MUL CL5为了使执行串操作指令时,地址按减量方式处理应使用指令_。 ( )(A)CLI (B)STI (C)CLD (D)STD68086 CPU 在基址加变址的寻址方式中,变址寄存器可以为_。 ( )(A) BX 或 CX (B) CX 或 SI (C) DX 或 SI (D) SI 或 DI8. 伪指令 VAR DD ? 将在内存预留 字节的存储空间。 ( )(A) 1 (B) 2 (C) 2 (D) 49下面指令序列执行后完成的运算,正确的算术表达式应是_。 ( )MOV AL,BYTE PTR XSHL AL,1DEC ALMOV BYTE PT
22、R Y,AL (A) y=x*2+1 (B) x=y*2+1 (C) x=y*2-1 (D) y=x*2-110执行下面的程序段后,AL 中的内容为 。 ( )BUF DW 2152H,3416H,5731H,4684HMOV BX,OFFSET BUFMOV AL,2XLAT(A) 46H (B) 34H (C) 16H (D) 57H11.汇编语言源程序每个语句可以由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是_。 ( )(A) 操作项 (B) 名字项 (C) 操作数项 (D) 注释项12下列指令执行时出错的是_。 ( )(A) ADD BUF1,BUF2 (B) JMP D
23、WORD PTR DATBX(C) MOV AX,10HBX (D) TEST AL,08H13已知(AX)=3456H,执行下述三条指令后, (AX)=_。 ( )MOV BX,AXNEG BXADD AX, BX(A) 3456H (B) 0EDCCH (C) 6DCCH (D) 0000H14将 DX 的内容乘以 2,正确的指令是_。 ( )(A) MUL 2 (B) MUL DX,2 (C) SAR DX,1 (D) SHL DX,1二 填空题: 1、DIV SRC 执行字节除法时,运算后的商存放在 中,余数存放在 中。2、设(BX)=0D6H,变量 VAL 中存放的内容为 77H,确
24、定下列各条指令单独执行后,BX 寄存器的值。(1)OR BX,VAL ;(BX)= (2)AND BX,VAL ;(BX)= 3、存放指令有效地址的寄存器是 ,该寄存器与 段寄存器联合使用确定指令的物理地址;存放栈顶有效地址的寄存器是 ,该寄存器与 段寄存器联合使用确定栈顶的物理地址4、在 REPNZ SCASB 指令中,重复执行串搜索指令的条件是 。5、指出下列指令中源操作数的寻址方式(9) MOV BX,1000H MOV AX,BXSI100H 6、汇编语言源程序中表示结束的伪指令是 。7、在汇编语言中,通常用来存放循环次数的寄存器是 。三、简述题: 1、 伪指令与指令的本质区别是什么?
25、 2、 编写汇编程序应经历哪些步骤?3、 指出能用于寄存器间接寻址及变址寻址的寄存器有哪些?它们通常与哪个段寄存器配合形成物理地址?BX SI DI-DSBP-SS4、 主程序与子程序的关系是什么?在程序中如何使用子程序? 5、 简述汇编语言相对高级语言的优点。四、程序分析题: A DW 3456HB DW 1234H.PUSH APUSH BPOP APOP B试回答:(1)上述程序段执行后(A)_ _, (B)_ _。(2) 设执行前 SP1000H,执行后 SP_。2 分析下面程序段,MOV AL,100SAR AL,1MOV BL,ALMOV CL,2SAR AL,CLADD AL,B
26、L试问程序段执行后(BL)_(AL)_。3、已知 AX=0FF60H,CF=1 MOV DX,16H XOR DH,0FFH SBB AX,DX 执行上述指令序列后,AX=_,CF=_ 4、执行下列程序段后,回答问题。ORG 100H NUM DW 12HMOV BX,OFFSET NUMMOV CL,BYTE PTR NUM+1 MOV CH,TYPE NUMMOV AX,NUM 请问:(AX)=_ 0012H_ _, (BX)=_ 0100H _, (CX)=_ 0200H _。5、DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS LEA S
27、I,S9 LEA DI,S9+1 MOV CX,5 LOP:MOV AL,SI XCHG AL,DI MOV SI,AL ADD SI,2 ADD DI,2 LOOP LOP 试说明该程序段的功能,并指出上述程序段运行后,S9 开始的 10 个字节存储单元内容是什么? 1,0,3,2,5,4,7,6,9,86、 已知一段程序如下:DATA SEGMENT A1 DW 10,20A2 EQU 100A3 DB 1234ORG 2A4 DW 1234HDATA ENDS画出该程序段的内存分配示意图(标明地址),并说明该数据段的,起始偏移地址和最终偏移地址。五、程序设计题: 1、 比较两个无符号数的
28、大小,若 AB,则显示出AB,否则显示BA。2、 在数据区中存放着一组数:28,18,38,48,78,58,数的类型为字节,要求用冒泡法对该数据区中的数据按递减关系排序。3、 编程求 123+100。将结果存放在 RESULT 单元中。4、 已知在数据区 BUF1 和 BUF2 分别存放Hello,everybodyHello,everyone字节数据。编程检查两数据区中的数据是否相同。若完全一致,则将标志单元 FLAG 置FFH,否则置 0,并将第一次出现的不同数据的地址分别存放在 ADDR1 和 ADDR2 单元中。习题三一、中断部分习题(3) 用 3 片 8259A 级联,最多可管理的
29、中断数是 ( )A.24 级 B.22 级C.23 级 D.21 级(4)从 CPU 的 NMI 引脚产生的中断叫做 _非屏蔽中断 _,他的响应不受_IF_的影响。(6)中断类型码为 15H 的中断,其服务程序的入口地址一定存放在_00054H00057H_四个连续的单元中,若这四个单元的的内容为:66H、50H、88H、30H,则其服务程序的入口地址为_3088H:5066H _。(7)设主片 8259A 的 IR3 上接有一从片,IR5 上引入了一个中断申请。那么初始化时,主、从片的 ICW3 分别是_主:08H;从:03H _。(9)中断类型码为 9H 的中断向量一定存放在 _个连续单元
30、中,若其入口地址为 3040H:2010H,则这四个单元中的具体内容依次为_。(10)在一个 8086CPU 和单片 8259A 组成的系统中,试说明:1、8086CPU 在响应可屏蔽中断的条件是什么?书上有。2、假如 8259A 已被编程, ICW2=0AH,若连接在 8259A 的 IR3 端的外设提出中断申请,它的中断向量的存放地址是什么?0002CH0002FH3、软件中断和硬件中断的区别?书上有。(12)某一中断程序入口地址值填写在中断向量表的 0080H 0083H 存储单元中,则该中断对应的中断类型号一定是( ) A.1FH B.20H C.21H D.22H(14)已知中断类型
31、号为 18H ,则其中断服务程序的入口地址存放在中断向量表的 _ 中。 ( ) A 0000H 00072H 0000H 0075H B 0000H 00072H 0000H 0073H C 0000H 00060H 0000H 0063H D 0000H 00060H 0000H 0061H二、定时器/计数器部分(1)试按如下要求分别编写 82C54 的初始化程序:己知 82C54 的计数器 0、1、2 和控制字 I/O 地址依次为 104H、105H、106H、107H 。1、使计数器 1 工作在方式 0,仅用低 8 位作二进制计数,计数初值为 128;Mov dx,107HMov al,
32、01010000bOut dx,alMov dx,105hMov al,128Out dx,al2、 使计数器 0 工作在方式 1,按 BCD 码计数,计数值为 3000;Mov dx,107HMov al,00110011bOut dx,alMov dx,104hMov ax,3000HOut dx,alMov al,ahOut dx,al3、 使计数器 2 工作在方式 2,按二进制计数,计数值为 02F0H。Mov dx,107HMov al,10110100bOut dx,alMov dx,106hMov ax,02F0HOut dx,alMov al,ahOut dx,al(3)825
33、4 芯片内包含有_3_个独立的计数通道,它有_6_种工作方式,计数初值为500,BCD 码计数方式,OUT1 输出为方波,则初始化时该通道的控制字应为_01110111B_。三、数据传输部分(3)在 8086 CPU 中,总线接口部件(BIU)的功能是_,执行部件(EU)的功能是_。(4)在 8086 中,一条指令的物理地址是由_相加得到的。(5)CPU 与 IO 设备间传送的信号有( )A.数据信息 B.控制信息C.状态信息 D.以上三种都是(7)若要可编程并行芯片 8255A 三个端口均作为输入口,并都工作在方式 0 下,则其方式选择控制字应为_10011011B _。(8)设串行异步通信
34、的数据格式是:1 个起始位,7 个数据位,1 个校验位,1 个停止位,若传输率为 1200,则每秒钟传输的最大字符数为( )A.10 个 B.110 个 C.120 个 D.240 个(12)8255A 的方式选择控制字为 80H,其含义是( )A.A、B、C 口全为输入 B.A 口为输出,其他为输入C.A、B 为方式 0 D.A、B、C 口均为方式 0,输出(13)设 8255A 接到系统中,端口 A、B、C 及控制口地址分别为 220H、221H、222H 及223H,工作在方式 0,试编程将端口 A 的数据输入后,从端口 C 输出,同时,将从 A 口输入的数据高 4 位不变,低 4 位取反后从端口 B 输出。课件上有。(16)设异步传输时,一帧信息包括 1 位起始位、7 位信息位、1 位奇偶校验位和 1 位停止位,如果波特率为 9600bps,则每秒能传输多少个字符?9600/(1+7+1+1)=960 个(17)CPU 执行 IN、OUT 指令,在硬件上会使_RD,WR_/读写_信号有效。