第8章输入输出程序设计.ppt

上传人:本田雅阁 文档编号:2552983 上传时间:2019-04-07 格式:PPT 页数:60 大小:597.51KB
返回 下载 相关 举报
第8章输入输出程序设计.ppt_第1页
第1页 / 共60页
第8章输入输出程序设计.ppt_第2页
第2页 / 共60页
第8章输入输出程序设计.ppt_第3页
第3页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第8章输入输出程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章输入输出程序设计.ppt(60页珍藏版)》请在三一文库上搜索。

1、2019/4/7,1,输入输出功能是计算机的重要组成部分,是人机交互功能的主要承担者。在早期的计算机系统中,通常把输入输出设备或功能作为次要的部分,而把CPU作为主要研究对象。但现在随着输入输出设备的日益丰富、功能要求越来越复杂,输入输出部分在整个计算机系统中的地位也得到了进一步提高。,第八章 输入输出程序设计,2019/4/7,2,输入输出设备是计算机系统的重要的组成部分,没有输入输出设备,计算机就得不到要解决问题的初始信息,处理的结果信息也不可能被送出,这样的计算机不能完成任何工作。 计算机系统是通过硬件接口(或控制器 )以及输出输出程序对外部设备实现处理和控制的。而汇编语言能直接控制硬件

2、,因此就成为编写输入输出程序的最有效的语言。,2019/4/7,3,8.1 I/O设备的数据传送方式,每种输入输出设备都是通过硬件接口或控制器与CPU相连接,这些接口都能支持输入输出指令IN,OUT与外部设备交换信息,这些信息包括控制、状态和数据三种不同性质的信息。,8.1.1 CPU与外设,2019/4/7,4,控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。 状态信息:从接口输入的状态信息表示I/O设备当前的状态。 数据信息:则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。这些信息可以是并行的,也可以是串行的。,CPU与外设之

3、间的数据传送方式有:程序直接控制 I/O方式、中断方式 和 DMA方式。由于DMA方式是由DMA控制器实现其传送功能的,所以在这里只做简单介绍。主要讲解前两种方式。,2019/4/7,5,8.1.2 直接存储器存取方式(DMA)方式,当外设的速度相对很高,且一次传送的数据量很大时,中断方式的效率就很低。例如,对磁盘的读写操作,一般的文件都有几十K,几百K,甚至几兆,通过DMA方式利用专门的接口控制电路,在存储器与高速的外设之间进行大量的数据交换,而不需要CPU的参与。 DMA控制器DMAC,除了具有一般接口的特点外,CPU可以通过对DMAC相应端口的读/写操作来控制DMA的工作方式;DMAC在

4、得到总线控制权后,能够像CPU一样提供相应的控制信号来控制系统总线,从而实现外设与内存之间高速大量的数据传输。一般接口电路不具备控制总线的能力。,2019/4/7,6,2019/4/7,7,8.2 程序直接控制I/O方式,关于I/O“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号等3大类。每个接口内部都包含有一定数量的寄存器(一般包括数据寄存器、状态寄存器和控制寄存器),用来存放三种不同信息。为了区分不同的寄存器(REG),需要给每个REG分配一个地址号,这就类似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的信息有分为数据端口(双向,输

5、入缓冲,输出锁存),状态端口(一般只读),控制端口(一般只写)。CPU对外设工作方式的控制和信息的交换最终都归结为CPU通过IN/OUT指令对各个可寻址端口的读写操作。,8.2.1 I/O接口基本结构及编址方式,2019/4/7,8,(1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足

6、存储空间的寻址范围。,I/O接口编址方式,2019/4/7,9,图,2019/4/7,10,I/O端口地址 I/O端口是CPU与输入输出设备的交换数据的场所,通过I/O端口,处理机可以接受从输入设备输入的信息;也可向输出设备发送信息。在计算机系统中,为了区分各类不同的I/O端口,就用不同的数字给它们进行编号,这种对I/O端口的编号就称为I/O端口地址。按照每次可交换一个字节数据的端口称为字节端口,每次可交换一个字数据的端口称为字端口。 在Intel公司的CPU家族中,I/O端口的地址空间可达64K,即可有65536个字节端口,或32768个字端口。这些地址不是内存单元地址的一部分,不能普通的访

7、问内存指令来读取其信息,而要用专门的I/O指令才能访问它们。虽然CPU提供了很大的I/O地址空间,但目前大多数微机所用的端口地址都在03FFH范围之内,其所用的I/O地址空间只占整个I/O地址空间的很小部分。表8.1列举了几个重要的I/O端口地址。,2019/4/7,11,2019/4/7,12,计算机在启动时,BIOS程序(Basic Input/Output System)将检查计算机系统中有哪些端口地址。当发现有串行端口地址时,BIOS就把 该端口存放在以地址40:00H开始的数据区内;当发现有并行端口地址时,BIOS会把它 存入以地址40:08H开始的数据区内。 每类端口有4个字的空间

8、,对有二个串行口、二个并行口的计算机系统,其BIOS程序将得到如图所示的部分数据表。 图中03F8H、02F8H、0378H和0278H分别为COM1、COM2、LPT1和LPT2的端口地址。,2019/4/7,13,I/O指令: 输入指令: IN AL, PORT IN AX, PORT IN AL, DX IN AX, DX 输出指令: OUT PORT, AL OUT PORT, AX OUT DX, AL OUT DX, AL PORT: 端口地址 若地址值255,可直接寻址(寻址范围256个端口); 否则, 需经寄存器DX间接寻址(寻址范围64K个端口),8.2.2 I/O指令,20

9、19/4/7,14,(1) IN AX, 28H MOV DATA_WORD, AX (2) IN AL, 27H TEST AL, 00000100 JNZ ERROR MOV DX, 126 IN AL, DX OR AL, 80H OUT DX, AL,2019/4/7,15,code segment main proc far assume cs:code s: push ds xor ax,ax push ax mov bx,6000;f mov cx,1000;times mov dx,cx in al,61h and al,11111100b,trig:xor al,2 out

10、61h,al mov cx,bx delay:loop delay dec dx jne trig ret main endp code ends end s,简单的I/O程序举例:SOUND程序,2019/4/7,16,程序直接控制I/O方式分:无条件传送方式 和条件传送方式,1)无条件传送 无条件:每次进行输入/输出之前,不需要查询外设的状态. 2)有条件传送 又称查询式传送,在每次输入/输出之前,先要读取外设的状态,满足一定的条件才能进行一次I/O操作。,2019/4/7,17,【例】向打印机输出字符。,2019/4/7,18,2019/4/7,19,: 源程序 MOV BX ,OFFS

11、ET, BUFFER ;置缓冲区偏移量 MOV CX,CHRTL ;置输出字符计数器 BG: MOV AL,BX ;取字符 MOV DX,378H ;输出字符到数据寄存器 OUT DX,AL MOV DX,379H ;读打印机状态,WT: IN AL,DX TEST AL,80H ;判忙否? JZ WT ;忙,重查询 MOV DX,37AH ;形成选通信号 MOV AL,0DH ;令打印机打印字符 OUT DX,AL MOV AL,0CH OUT DX,AL INC BX ;指向下一输出字符 LOOP BG ,2019/4/7,20,在看一个例子 Cpu要从三个设备轮流输入数据,proc1、

12、proc2、 proc3分别是设备1、设备2、设备3的数据输入程序,他们的状态寄存器的端口地址分别为stat1、stat2、stat3表示,这三个状态寄存器的第五位是输入准备位。,2019/4/7,21,input: in al , stat1 test al,20h jz dev2 call far ptr proc1 dev2: in al,stat2 test al,20h jz dev3 call far ptr proc2 dev3: in al,stat3 test al,20h jz no_input call far ptr proc 3 no_input,2019/4/7,2

13、2,查询式传输过程的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。 为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查

14、询状态信号的操作上,使其工作效率得以大大地提高。,8.3 中断传送方式,2019/4/7,23,外部设备是如何连到主机上的?,2019/4/7,24,8.3.1 8086中断的分类:内部中断和硬件中断,(1)内部中断 内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种: l 除数为中断类型0中断 l 溢出中断类型4中断INTO l 单步中断类型1中断 l 断点中断类型3中断 l 中断指令指令INT n中断,由cpu的某些错误引起,为调试程序而设置的中断,2019/4/7,25,(2)硬件中断:来自处理机的外部条件 所以又称

15、外中断硬件中断主要有两种来源非屏蔽中断NMI 和可屏蔽中断INTR。 非屏蔽中断NMI。非屏蔽中断来源于三方: 系统板的RAM在读写时产生奇偶校验错; I/O通道中的扩展选件出现奇偶校验错; 协处理器8087的异常状态产生的中断。 可屏蔽中断INTR是由外部设备通过一片8259A产生的中断请求。,从外设发出的中断请求到cpu响应中断,用两个控制条件起决定作用: 1、外设的中断请求是否被屏蔽。 2、cpu是否允许相应中断。 8259A内部有一个中断屏蔽寄存器,端口地址为21h,2019/4/7,26,结束硬件中断 mov al, 20h out 20h, al,中断屏蔽寄存器和中断命令寄存器,只

16、允许键盘中断: mov al ,11111101 out 21h,al,2019/4/7,27,外部设备向cpu发出中断请求,cpu是否相应还与 IF 有关,STI开中断指令 将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求 CLI关中断指令 将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求,2019/4/7,28,8.3.2 中断向量表 在8086系统中,内存最低端的1K字节地址范围内(从00000003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地

17、址,地址较低的两个字节放偏移地址。 中断向量表中的存储地址 中断类型码n4,什么是中断向量、中断向量地址、中断向量表?,2019/4/7,29,2019/4/7,30,表8-3 中断向量表,地址(Hex) 类型码 中断名称 03 0 除以0 47 1 单步 8B 2 非屏蔽 CF 3 断点 1013 4 溢出 1417 5 打印屏幕 181B 6 保留 1D1F 7 保留 2023 8 定时器 2427 9 键盘 282B A 保留的硬中断 2C2F B 异步通信(COM2) 3033 C 异步通信(COM1) 3437 D 硬盘 383B E 软盘 3C3F F 并行打印机,地址(Hex)

18、类型码 中断名称 4043 10 视频显示I/O调用 4447 11 设备检测调用 484B 12 存储器容量检测 4C4F 13 软/硬盘I/O调用 5053 14 通信I/O调用 5457 15 盒式磁带I/O调用 585B 16 键盘I/O调用 5C5F 17 打印机I/O调用 6063 18 ROM BASIC 6467 19 引导程序入口 686B 1A 时间调用 6C6F 1B 键盘CTRL-BREAK控制 7073 1C 定时器报时 7477 1D 显示器参数表 787B 1E 软盘参数表,7C7F 1F 字符点阵结构参数表,BIOS中断向量,2019/4/7,31,DOS中断向

19、量,2019/4/7,32,用指令来为中断类型N设置中断向量: MOV AX, 0 MOV ES, AX MOV BX, N*4 ;中断入口地址 MOV AX, OFFSET INTHAND MOV ES:WORD PRTBX,AX ;设置中断处理程序INTHAND MOV AX, SEG INTHAND ;的入口地址 MOV ES:WORD PRTBX+2,AX, INTHAND: ;中断处理程序 IRET,用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。,2019/4/7,33,用户在编写自己的中断处理程序代替系统中的某个中断处理功

20、能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量,取中断向量 预置AH=35H, AL=中断类型号 执行INT 21H 把类型号为AL的中断向量取出到ES:BX中 设置中断向量 预置AH=25H, AL=中断类型号,DS:DX=中断向量 执行INT 21H 把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处,2019/4/7,34, MOV AL, N MOV AH, 35H ;调用DOS功能35H INT 21H PUSH ES ;保存原中断向量 PUSH BX PUSH DS MOV AX, SEG INTHAND M

21、OV DS, AX ;置用户定义的中断处理 MOV DX, OFFSET INTHAND ;程序INTHAND的入口 MOV AL, N ;地址(段地址和偏移地址) MOV AH, 25H ;设置新的中断向量 INT 21H,例:使用DOS功能调用存取中断向量。,2019/4/7,35,POP DS POP DX ;恢复原中断向量 POP DS MOV AL , N MOV AH , 25H INT 21H RET INTHAND: ;中断处理程序 IRET,2019/4/7,36,当中断发生时,由硬件自动完成下列动作: (1)取中断类型号N。 (2)标志寄存器(PSW)内容入栈。 (3)当前

22、代码段寄存器(CS)内容入栈。 (4)当前指令计数器(IP)内容入栈。 (5)禁止外部中断和单步中断(IF=0,TF=0)。 (6)从中断向量表中取4*N的字节内容送IP,取 4*N+2的字节内容送CS。 (7)转中断处理程序。,8.3.3 中断过程,2019/4/7,37,8.3.4 中断优先级和中断嵌套,IBM-PC规定中断的优先级次序为: 优先级高 内部中断(语法错,INTO,INT) 非屏蔽中断(NMI) 可屏蔽中断(INTR) 低 单步中断,可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0 、IR1、 IR2、 IR3、 IR4、 IR5、 IR6、 IR7,2

23、019/4/7,38,可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0 、IR1、 IR2、 IR3、 IR4、 IR5、 IR6、 IR7,R SL 0 0 正常优先级关系 0 1 清除由L2-L0指定的中断请求 1 0 个中断优先级依次作循环一个位置 1 1 各中断优先级依次循环到由L2-L0指定的中断请求为最低,2019/4/7,39,主 程 序,中断请求 1,中断 响应,1中断服务子程序,2,中断 响应,2中断服务子程序,3,3中断服务子程序,IRET,IRET,IRET,断点,中断嵌套:高优先级的中断请求能打断正在处理中的低级中断服务程序;在较高级的中断服务程序

24、结束后,可返回被打断的低级中断服务程序,继续执行。 优先级:1 2 3,STI和 EOI 在中断嵌套中如何是使用? 如果想让低级中断中断正在服务的高级中断应怎么做?,2019/4/7,40,(1)中断处理流程图 (2)中断服务子程序结构 1)保护现场(类似于执行通用子程序) 2)开中断(可选) 3)执行关于当前中断源或异常处理所要求的I/O等程序操作 4)关中断(可选) 5)送中断结束命令给(EOI) 6)恢复现场 7)中断返回,8.3.5 中断处理的一般过程,Y,N,Y,Y,N,N,2019/4/7,41,中断控制 子程序调用 程序进入方式 外部随机请求 CALL指令 程序进入时刻 当前指令

25、执行后 执行CALL指令后 保护/恢复现场 视需要设置 视需要设置 保护/恢复断点 PSW/CS/IP CS/IP 返回主程序指令 执行IRET 执行RET 参数传递 无 无,比较: 中断控制与子程序调用,2019/4/7,42,【例8.5】编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“The bell is ring!”。,在系统定时器的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒中断18.2次)都嵌套调用一次1CH的处理程序。 在ROM BIOS例程中,1CH的处理程序只有一条IRET指令,实际上它没有作任何工作,只是为用户提

26、供了一个中断类型号。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1CH中断程序。,2019/4/7,43,编程如下: DATA SEGMENT COUNT DW 1 MESS DB The bell is ring!, 0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES: DATA MAIN PROC FAR START:PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AL,1CH ;取中断向量 MOV AH,

27、35H INT 21H,2019/4/7,44,PUSH ES ;存原中断向量段址 PUSH BX ;存原中断向量偏移量 PUSH DS MOV DX, OFFSET RING ;新偏移量送DX MOV AX, SEG RING MOV DS, AX ;新段址送DS MOV AL, 1CH MOV AH, 25H INT 21H ;写入新的中断向量 POP DS IN AL, 21H ;读取中断屏蔽字 AND AL, 11111110B ;允许定时器中断 OUT 21H, AL STI ;开中断 MOV DI, 2000 DELAY:MOV SI,3000 ;延时,DELAY1:DEC SI

28、JNZ DELAY1 DEC DI JNZ DELAY POP DX ;恢复原中断向量 POP DS MOV AL,1CH MOV AH,25H INT 21H MAIN ENDP,RING: PROC NEAR PUSH DS PUSH AX PUSH CX PUSH DX MOV AX,DATA MOV DS,AX,2019/4/7,45,STI ;开中断 DEC COUNT ;计秒值 JNZ EXIT MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV DX,100 IN AL,61H AND AL,0FCH SOUND:XOR AL,02 OUT 61H

29、,AL;扬声器发声 MOV CX,140H WAIT1: LOOP WAIT1;延时等待 DEC DX JNE SOUND MOV COUNT,182,EXIT: CLI ;关中断 POP DX POP CX POP AX POP DS IRET ;中断返回 RING ENDP CODE ENDS END START,2019/4/7,46,例8.6 在配置了键盘中断输入(中断类型09)和打印机输出(中断类型为0fh)两种外部设备的80x86的中断系统中,要求从键盘上接收一个字符,同时对32字节的输入缓冲区进行测试,如果缓冲区已满,则键盘挂起(禁止键盘中断输入),由打印机输出一个信息。 键盘和

30、打印机分别由中断屏蔽寄存器(21h)的1位和7位控制。键盘的输入寄存器的端口地址为60h,控制寄存器的端口地址为61h.打印机输出寄存器的端口地址为378h,打印机控制寄存器的端口地址为37ah。,2019/4/7,47,例8.7 除数为0的软件中断(类型0)处理程序 int 21h的功能4ch,该功能是惟一不依赖于任何段寄存器内容的中止功能。该功能的另一个优点是能在al中返回一个表明程序是否正常终止的出口代码 ,al:00正常终止,01 用ctrl_C终止,02 严重设备错误引起终止;03用功能调用31h终止,0ffh cpu 错误引起终止。,2019/4/7,48,1.假设字节单元(069

31、25H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)= ,字单元(06926H)= 。 a. 1245H b. 4578H c. 4512H d. 7845H 2.逻辑运算指令都是按 进行操作的,指令执行后只设置标志位,不保留结果的逻辑运算指令是 。 a. 位 b. 字节 c. 字 d. BCD码 e. AND f. OR g. XOR h. TEST 3.和指令AND AL,55 AND 0F0H 等效的指令是 ,和MOV BX, 0FH EQ 1111B等效的指令是 。 a. AND AL,55H b. AND AL,0F5H c. AND AL

32、,50H d. AND AL, 0F0H e. MOV BX,0000H f. MOV BX,0FH g. MOV BX,0FFH h. MOV BX,0FFFFH 4.过程定义开始的伪指令是 。 宏定义结束的伪指令是 。 a. SEGMENT b. MACRO c. PROC d. ASSUME e. END f. ENDS g. ENDM h. ENDP 5.将数据37H定义为字节变量X1的语句是 ,数据37H定义为字变量X2的语句是 。 a. X1 DB 37 b. X2 DB 37 c. X1 DW 37H d. X2 DW 37H e. X1 DB 37H g. X2 DB 37H

33、6.互换指令XCHG可以在两个寄存器之间互换数据,也可以在 与 之间互换数据。 a. 寄存器 b. 立即数 c. 存储单元 d. 堆栈 7.对程序流向的控制和转移,就是对执行指令地址的修改。如在同一段内偏移,则修改 ,如在两个段之间转移,则修改 。 a. IP b. CS c. CS和IP d. CS或IP,2019/4/7,49,18088/8086 CPU内部共有 个寄存器,其中有 个通用寄存器、 个变址寄存器、 个段寄存器。 28088/8086 CPU有 种数据寻址方式,其中采用 寻址方式的指令执行速度最快。 3IBM-PC计算机全部指令的集合称为它的 。这些指令按功能可以分为六大类:

34、数据传送指令、算术指令、 、串处理指令、 和 。 4在不改变段寄存器的前提下,IBM-PC计算机内存寻址的最大范围是 字节。若CS=1234H,SS=2341H,DS=3412H,BP=8756H,则以BP寄存器间接寻址的非段超越的内存单元的物理地址是 。 5程序有顺序结构 、 、 和 四种结构。 6循环程序有两种结构形式,一种是 ,另一种是 ,当有可能一次也无需执行循环体时采用前者。 78088/8086允许使用 个中断向量,每个中断向量占 个字节,系统的低段地址从 到 存放着中断向量表。 8下面是对DOS功能调用方法的简单说明: (1)在AH寄存器中存入所要调用功能的 。 (2)根据所调用

35、功能的规定设置 。 (3)用 指令转入子程序入口。 (4)相应的子程序运行完后,可以按规定取得 。,2019/4/7,50,1、在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 2、ARY DW 10 DUP(?) MOV AL,TYPE ARY MOV BL,LENGTH ARY MOV CL,SIZE ARY 上述MOV指令序列执行后的结果是什么? 3、设某数据段: DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB COMPUTER DB 0A

36、H,0DH COUNT EQU $-DA1 DA2 DW CO,MP,UT,ER DATA ENDS 试回答:(1)DA1的偏移地址是:_ (2)COUNT的值是_ (3)DA2+5字节单元的内容是_,2019/4/7,51,13在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来( )。 参考答案为:B A占内存空间小,但速度慢 B占内存空间大,但速度快 C占内存空间相同,速度快 D占内存空间相同,速度慢 14在程序执行过程中,IP寄存器中始终保存的是( )。 参考答案为:B A上一条指令的首地址 B下一条指令的首地址 C正在执行指令的首地址 D需计算有效地址后才能确定地址 15P

37、SW寄存器中共有( )位条件状态位,有( )位控制状态位。 参考答案为:A A6、3 B3、6 C8、4 D4、8 16下列指令执行时出错的是( )。 参考答案为:A AADD BUF1,BUF2 BJMP DWORD PTR DAT BX CMOV AX,BX+DI NUM DTEST AL,08H 17已知(AX)=1234H,执行下述三条指令后,(AX)=( )。 参考答案为:D MOV BX,AX NEG BX ADD AX,BX A1234H B0EDCCH C6DCCH D0000H 18在下列指令中,( )指令的执行会影响条件码中的CF位。 参考答案为:D AJMP NEXT B

38、JC NEXT CINC BX DSHL AX,1 19串指令中的目的操作数地址是由( )提供。 参考答案为:C ASS:BP BDS:SI CES:DI DCS:IP 20将DX的内容除以2,正确的指令是( )。 参考答案为:C ADIV 2 BDIV DX,2 CSAR DX,1 DSHL DX,1,2019/4/7,52,l.变量和标号的区别是_。 2.下述指令的目操作数是存放在堆栈段中,请填入正确答案。ADD_BX,CH。 3.段地址和偏移地址为2000:5076的存储单元物理地址是_。 4.在下列程序段括号中,填入正确的答案。 ( ) SEGMENT BUF DB 12H,56H D

39、ATA ENDS . CODE ( ) 5.指出下列指令错误原因,填入括号中。 A. MOV AX,BL ;( ) B. MOV CS,AX ;( ) C. DEC GAMABX;( ) D. MOV ES,5600H;( ) E. SUB AX,DS ;( ) 6.下列语句在存贮器中分别为变量分配多少字节?请填入括号中。 VR1 DW ? ;( ) VR2 DW 4 DUP(?),2;( ) CONT EQU 10 ;( ),2019/4/7,53,1.在8086/8088系统中,存储器是分段的,每段最大长度是_字节,段内偏移地址从_到_。 2.在程序调试时,显示某指令存放地址是2340:0

40、056,则物理地址是_。 3.汇编语言源程序中的语句有三种类型,它们是_语句,_语句和_语句。 4指令MOV AX,BX+SI+10H源操作数寻址方式是_。 5.执行段间返回指令RET时,将栈顶的一个字弹出到_后,又弹出一个字到_寄存器中。 6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,执行NEG WORD PTRDI后,(31200H)=_,(31201H)=_。 7.执行下列指令序列 MOV AL,80H MOV BL,08H CBW IDIV BL 则AH=_AL=_。 8.已知数据定义语句 ORG 120H VECT1 DW 200H

41、VECT2 DW VECT1 执行 MOV AX,VECT1 AX=_ MOV BX,VECT2 BX=_。,2019/4/7,54,判断以下各语句是否有错误,如有错误请说明错误原因 1MOV AX, 0 2MOV 1000H, 1000H 3MOV BL, AX 4MOV 0, AX 5PUSH PSW 6SHR DX, BL 7MUL AL, BL 8AND AX, 1000 9XCHG CS, DS 10LDS AL, BX,2019/4/7,55,1.下列语句在存储器中分别为变量数据区分配多少个字节单元? (1)VAR3 DD 10 (2)VAR4 DW 4 DUP(?),2 2.设D

42、S=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少? (1)JMP BX IP=_ (2)JMP TABLEBX IP=_ 3.选用NOT,AND,OR XOR逻辑指令编写一指令序列,实现将AL第0位,第2位同时置1,其他位变反。,1.指令 ARRAY DB 100 DUP (0,3 DUP (1,2),0,3) 汇编后为ARRAY存储单元分配 ( ) 个字节。 2.指令 LEA SI ,DATA1 可用指令( )代替。 3.中断向量表的地址范围是( )。 4.指令 MOV AX , 256BXSI的寻址方

43、式是 ( ) 。 5.STRING DB AB,0,0,CD,0,0,EF,0,0 请用DW伪指令改写上述语句,必须保持内存单元内容不变。 ( ),2019/4/7,56,1在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 2用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。 DA1 DB 20H DUP(?) DA2 DW 10H,45H,7856H 3已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=300

44、0H,试分别指出下列各指令中存储器操作数的物理地址。 MOV AL,BP+20H的物理地址是 : MOV BX+DI-80H,AL的物理地址是: MOV BL,ES:SI+40H的物理地址是:,2019/4/7,57,简答题 1. DA1 DB 20H DUP(?) DA2 DW 10H,45H,7856H 请用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。 2. 用三种不同方法实现在字存储单元DB1中存储2000H。 3. 已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。 MOV AL,BP+20H的物理地址是 。 MOV BX+DI-80H,AL的物理地址是 。 MOV BL,ES:SI+40H的物理地址是 。,2019/4/7,58,判断题(共10分,每小题1分) 18086/8088内存分段存取,受其内存总量的限制,最多

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1