第8章 输入输出程序设计_第1页
第8章 输入输出程序设计_第2页
第8章 输入输出程序设计_第3页
第8章 输入输出程序设计_第4页
第8章 输入输出程序设计_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

输入输出功能是计算机的重要组成部分,是人—机交互功能的主要承担者。在早期的计算机系统中,通常把输入输出设备或功能作为次要的部分,而把CPU作为主要研究对象。但现在随着输入输出设备的日益丰富、功能要求越来越复杂,输入输出部分在整个计算机系统中的地位也得到了进一步提高。第八章输入输出程序设计2/5/20231

输入输出设备是计算机系统的重要的组成部分,没有输入输出设备,计算机就得不到要解决问题的初始信息,处理的结果信息也不可能被送出,这样的计算机不能完成任何工作。计算机系统是通过硬件接口(或控制器)以及输出输出程序对外部设备实现处理和控制的。而汇编语言能直接控制硬件,因此就成为编写输入输出程序的最有效的语言。2/5/202328.1I/O设备的数据传送方式

每种输入输出设备都是通过硬件接口或控制器与CPU相连接,这些接口都能支持输入输出指令IN,OUT与外部设备交换信息,这些信息包括控制、状态和数据三种不同性质的信息。存储器I/O接口输入设备I/O接口数据总线DB控制总线CB地址总线AB输出设备CPU8.1.1CPU与外设2/5/20233控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。状态信息:从接口输入的状态信息表示I/O设备当前的状态。数据信息:则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。这些信息可以是并行的,也可以是串行的。

CPU与外设之间的数据传送方式有:程序直接控制I/O方式、中断方式和DMA方式。由于DMA方式是由DMA控制器实现其传送功能的,所以在这里只做简单介绍。主要讲解前两种方式。2/5/202348.1.2直接存储器存取方式(DMA)方式

当外设的速度相对很高,且一次传送的数据量很大时,中断方式的效率就很低。例如,对磁盘的读写操作,一般的文件都有几十K,几百K,甚至几兆,通过DMA方式利用专门的接口控制电路,在存储器与高速的外设之间进行大量的数据交换,而不需要CPU的参与。

DMA控制器-DMAC,除了具有一般接口的特点外,CPU可以通过对DMAC相应端口的读/写操作来控制DMA的工作方式;DMAC在得到总线控制权后,能够像CPU一样提供相应的控制信号来控制系统总线,从而实现外设与内存之间高速大量的数据传输。一般接口电路不具备控制总线的能力。2/5/20235存储器外部设备CPUDMA请求DMA响应HOLDHLDADMA控制器2/5/202368.2程序直接控制I/O方式关于I/O“接口”与“端口”I/O接口与CPU之间传送的信息有数据、状态和控制信号等3大类。每个接口内部都包含有一定数量的寄存器(一般包括数据寄存器、状态寄存器和控制寄存器),用来存放三种不同信息。为了区分不同的寄存器(REG),需要给每个REG分配一个地址号,这就类似于给内存单元编址一样。I/O接口内部可寻址的REG又称为端口。按接受和传送的信息有分为数据端口(双向,输入缓冲,输出锁存),状态端口(一般只读),控制端口(一般只写)。CPU对外设工作方式的控制和信息的交换最终都归结为CPU通过IN/OUT指令对各个可寻址端口的读写操作。

8.2.1I/O接口基本结构及编址方式2/5/20237(1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。(2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足存储空间的寻址范围。

I/O接口编址方式2/5/20238图2/5/20239I/O端口地址I/O端口是CPU与输入输出设备的交换数据的场所,通过I/O端口,处理机可以接受从输入设备输入的信息;也可向输出设备发送信息。在计算机系统中,为了区分各类不同的I/O端口,就用不同的数字给它们进行编号,这种对I/O端口的编号就称为I/O端口地址。按照每次可交换一个字节数据的端口称为字节端口,每次可交换一个字数据的端口称为字端口。在Intel公司的CPU家族中,I/O端口的地址空间可达64K,即可有65536个字节端口,或32768个字端口。这些地址不是内存单元地址的一部分,不能普通的访问内存指令来读取其信息,而要用专门的I/O指令才能访问它们。虽然CPU提供了很大的I/O地址空间,但目前大多数微机所用的端口地址都在0~3FFH范围之内,其所用的I/O地址空间只占整个I/O地址空间的很小部分。表8.1列举了几个重要的I/O端口地址。2/5/2023102/5/202311计算机在启动时,BIOS程序(BasicInput/OutputSystem)将检查计算机系统中有哪些端口地址。当发现有串行端口地址时,BIOS就把该端口存放在以地址40:00H开始的数据区内;当发现有并行端口地址时,BIOS会把它存入以地址40:08H开始的数据区内。每类端口有4个字的空间,对有二个串行口、二个并行口的计算机系统,其BIOS程序将得到如图所示的部分数据表。图中03F8H、02F8H、0378H和0278H分别为COM1、COM2、LPT1和LPT2的端口地址。2/5/202312

I/O指令:

输入指令:IN

AL,PORTINAX,PORT INAL,DXINAX,DX输出指令:OUTPORT,ALOUTPORT,AX OUTDX,ALOUTDX,ALPORT:端口地址若地址值≦255,可直接寻址(寻址范围256个端口);否则,需经寄存器DX间接寻址(寻址范围64K个端口)

8.2.2I/O指令2/5/202313(1)INAX,28HMOVDATA_WORD,AX(2)INAL,27HTEST

AL,00000100JNZERRORMOVDX,126INAL,DXORAL,80HOUT

DX,AL2/5/202314codesegmentmainprocfarassumecs:codes:pushdsxorax,axpushaxmovbx,6000;f

movcx,1000;times

movdx,cx

inal,61handal,11111100b

trig:xoral,2

out61h,almovcx,bxdelay:loopdelaydecdxjnetrigretmainendpcodeendsends简单的I/O程序举例:SOUND程序2/5/202315程序直接控制I/O方式分:无条件传送方式 和条件传送方式1)无条件传送 无条件:每次进行输入/输出之前,不需要查询外设的状态.2)有条件传送又称查询式传送,在每次输入/输出之前,先要读取外设的状态,满足一定的条件才能进行一次I/O操作。

2/5/202316C

P

U打

器打印机DBSTBBUSYCB

DB

AB图打印机连接示意图

【例】向打印机输出字符。2/5/2023172/5/202318:┆源程序

MOV BX,OFFSET,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┆2/5/202319在看一个例子

Cpu要从三个设备轮流输入数据,proc1、proc2、proc3分别是设备1、设备2、设备3的数据输入程序,他们的状态寄存器的端口地址分别为stat1、stat2、stat3表示,这三个状态寄存器的第五位是输入准备位。2/5/202320

input:in al,stat1

test al,20hjz

dev2call farptrproc1

dev2:in al,stat2test al,20hjz

dev3

call farptrproc2

dev3:in al,stat3 test al,20h jz no_input call farptrproc3no_input2/5/202321

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

内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:

l

除数为0中断——类型0中断

l

溢出中断——类型4中断INTO

l

单步中断——类型1中断

l

断点中断——类型3中断

l

中断指令——指令INTn中断由cpu的某些错误引起为调试程序而设置的中断2/5/202324(2)硬件中断:来自处理机的外部条件所以又称外中断硬件中断主要有两种来源——非屏蔽中断NMI和可屏蔽中断INTR。•非屏蔽中断NMI。非屏蔽中断来源于三方:

系统板的RAM在读写时产生奇偶校验错;

I/O通道中的扩展选件出现奇偶校验错;协处理器8087的异常状态产生的中断。•可屏蔽中断INTR是由外部设备通过一片8259A产生的中断请求。从外设发出的中断请求到cpu响应中断,用两个控制条件起决定作用:

1、外设的中断请求是否被屏蔽。2、cpu是否允许相应中断。

8259A内部有一个中断屏蔽寄存器,端口地址为21h2/5/202325结束硬件中断moval,20hout20h,al中断屏蔽寄存器和中断命令寄存器只允许键盘中断:

moval,11111101

out21h,al2/5/202326外部设备向cpu发出中断请求,cpu是否相应还与IF有关STI——开中断指令将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求CLI——关中断指令将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求2/5/2023278.3.2中断向量表

在8086系统中,内存最低端的1K字节地址范围内(从00000-003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地址,地址较低的两个字节放偏移地址。

中断向量表中的存储地址=中断类型码n×4什么是中断向量、中断向量地址、中断向量表?2/5/2023282/5/202329表8-3中断向量表地址(Hex)

类型码中断名称

0—30除以04—71单步

8—B2非屏蔽

C—F3断点

10—134溢出

14—175打印屏幕

18—1B6保留

1D—1F7保留

20—238定时器

24—279键盘

28—2BA保留的硬中断

2C—2FB异步通信(COM2)30—33C异步通信(COM1)34—37D硬盘

38—3BE软盘

3C—3FF并行打印机地址(Hex)

类型码中断名称40—4310视频显示I/O调用44—4711设备检测调用48—4B12存储器容量检测4C—4F13软/硬盘I/O调用50—5314通信I/O调用54—5715盒式磁带I/O调用58—5B16键盘I/O调用5C—5F17打印机I/O调用60—6318ROMBASIC64—6719引导程序入口68—6B1A时间调用6C—6F1B键盘CTRL-BREAK控制70—731C定时器报时74—771D显示器参数表78—7B1E软盘参数表7C—7F1F字符点阵结构参数表BIOS中断向量2/5/202330地址(Hex)

类型码中断名称80—8320程序结束,返回DOS84—8721DOS系统功能调用88—8B22程序结束地址8C—8F23CTRL_BREAK退出地址90—9324标准错误出口地址94—9725绝对磁盘读98—9B26绝对磁盘写9C—9F27程序结束,驻留内存A0—FF28—3F为DOS保留100—17F40—5F保留(扩充BIOS中断向量)180—19F60—67为用户软中断保留1A0—1FF68—7F不用(其中70—77为I/O设备中断向量)200—21780—85BASIC使用218—3C386—F0BASIC运行时,用于解释3C4—3FFF1—FF未用DOS中断向量2/5/202331用指令来为中断类型N设置中断向量:MOV AX,0MOV ES,AXMOV BX,N*4 ;中断入口地址MOV AX,OFFSETINTHANDMOV ES:WORDPRT[BX],AX ;设置中断处理程序INTHANDMOV AX,SEGINTHAND ;的入口地址MOV ES:WORDPRT[BX+2],AX

┆INTHAND: ;中断处理程序 ┆

IRET

用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。2/5/202332

用户在编写自己的中断处理程序代替系统中的某个中断处理功能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量取中断向量预置AH=35H,AL=中断类型号执行INT21H——把类型号为AL的中断向量取出到ES:BX中设置中断向量预置AH=25H,AL=中断类型号,DS:DX=中断向量执行INT21H——把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处2/5/202333┆MOV AL,N

MOV AH,35H ;调用DOS功能35HINT 21HPUSH ES ;保存原中断向量PUSH BXPUSH DSMOV AX,SEGINTHANDMOV DS,AX ;置用户定义的中断处理MOV DX,OFFSETINTHAND;程序INTHAND的入口MOV AL,N ;地址(段地址和偏移地址)MOV AH,25H ;设置新的中断向量INT 21H例:使用DOS功能调用存取中断向量。2/5/202334 POP DS ┆ POP DX ;恢复原中断向量 POP DS MOV AL,N MOV AH,25H INT 21H RETINTHAND: ;中断处理程序 ┆

IRET2/5/202335当中断发生时,由硬件自动完成下列动作:(1)取中断类型号N。(2)标志寄存器(PSW)内容入栈。(3)当前代码段寄存器(CS)内容入栈。(4)当前指令计数器(IP)内容入栈。(5)禁止外部中断和单步中断(IF=0,TF=0)。(6)从中断向量表中取4*N的字节内容送IP,取 4*N+2的字节内容送CS。(7)转中断处理程序。

8.3.3中断过程2/5/202336

8.3.4中断优先级和中断嵌套IBM-PC规定中断的优先级次序为:优先级高内部中断(语法错,INTO,INT)

非屏蔽中断(NMI)

可屏蔽中断(INTR)

低单步中断

可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR72/5/202337

可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7RSL

00

正常优先级关系01

清除由L2-L0指定的中断请求10

个中断优先级依次作循环一个位置11

各中断优先级依次循环到由L2-L0指定的中断请求为最低2/5/202338主程序中断请求

1#中断响应1#中断服务子程序2#中断响应2#中断服务子程序3#3#中断服务子程序IRETIRETIRET断点中断嵌套:高优先级的中断请求能打断正在处理中的低级中断服务程序;在较高级的中断服务程序结束后,可返回被打断的低级中断服务程序,继续执行。优先级:#1<#2<#3STI和EOI在中断嵌套中如何是使用?如果想让低级中断中断正在服务的高级中断应怎么做?2/5/202339(1)中断处理流程图(2)中断服务子程序结构1)保护现场(类似于执行通用子程序)2)开中断(可选)3)执行关于当前中断源或异常处理所要求的I/O等程序操作4)关中断(可选)5)送中断结束命令给(EOI)6)恢复现场7)中断返回

8.3.5中断处理的一般过程YNYYNN2/5/202340

中断控制

子程序调用程序进入方式

外部随机请求

CALL指令程序进入时刻

当前指令执行后 执行CALL指令后保护/恢复现场

视需要设置

视需要设置保护/恢复断点

PSW/CS/IP CS/IP返回主程序指令

执行IRET

执行RET参数传递

无比较:中断控制与子程序调用2/5/202341【例8.5】编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“Thebellisring!”。

在系统定时器的中断处理程序中,有一条中断指令INT1CH,时钟中断每发生一次(约每秒中断18.2次)都嵌套调用一次1CH的处理程序。在ROMBIOS例程中,1CH的处理程序只有一条IRET指令,实际上它没有作任何工作,只是为用户提供了一个中断类型号。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1CH中断程序。2/5/202342编程如下:DATA SEGMENTCOUNT DW1MESS DB‘Thebellisring!’,0DH,0AH,’$’DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,ES:DATAMAIN PROCFARSTART:PUSH DS SUB AX,AXPUSH AX MOV AX,DATA MOV DS,AX

MOV AL,1CH ;取中断向量

MOV AH,35H

INT 21H2/5/202343PUSH ES ;存原中断向量段址PUSH BX ;存原中断向量偏移量PUSH DSMOV DX,OFFSETRING ;新偏移量送DXMOV AX,SEGRINGMOV DS,AX ;新段址送DSMOV AL,1CHMOV AH,25HINT 21H ;写入新的中断向量POP

DSIN AL,21H ;读取中断屏蔽字AND AL,11111110B ;允许定时器中断OUT 21H,ALSTI ;开中断MOV DI,2000DELAY:MOVSI,3000 ;延时

DELAY1:DEC SIJNZDELAY1DECDIJNZDELAYPOPDX ;恢复原中断向量POPDSMOVAL,1CHMOVAH,25HINT21HMAINENDPRING: PROC NEAR

PUSH DS PUSH AX PUSH CX PUSH DX

MOV AX,DATA MOV DS,AX2/5/202344

STI ;开中断 DEC COUNT ;计秒值

JNZ EXIT

MOV DX,OFFSETMESS MOV AH,09H INT 21H

MOV DX,100

IN AL,61H AND AL,0FCHSOUND:XOR AL,02 OUT 61H,AL;扬声器发声

MOV CX,140HWAIT1: LOOP WAIT1;延时等待

DEC DX JNE SOUND

MOV COUNT,182EXIT: CLI ;关中断

POP DX POP CX POP AX POP DS IRET ;中断返回RING ENDPCODE ENDS END START2/5/202345例8.6在配置了键盘中断输入(中断类型09)和打印机输出(中断类型为0fh)两种外部设备的80x86的中断系统中,要求从键盘上接收一个字符,同时对32字节的输入缓冲区进行测试,如果缓冲区已满,则键盘挂起(禁止键盘中断输入),由打印机输出一个信息。键盘和打印机分别由中断屏蔽寄存器(21h)的1位和7位控制。键盘的输入寄存器的端口地址为60h,控制寄存器的端口地址为61h.打印机输出寄存器的端口地址为378h,打印机控制寄存器的端口地址为37ah。2/5/202346例8.7除数为0的软件中断(类型0)处理程序

int21h的功能4ch,该功能是惟一不依赖于任何段寄存器内容的中止功能。该功能的另一个优点是能在al中返回一个表明程序是否正常终止的出口代码,al:00正常终止,01用ctrl_C终止,02严重设备错误引起终止;03用功能调用31h终止,0ffhcpu

错误引起终止。2/5/2023471.假设字节单元(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)=

,字单元(06926H)=

a.1245H

b.4578H

c.4512H

d.7845H2.逻辑运算指令都是按

进行操作的,指令执行后只设置标志位,不保留结果的逻辑运算指令是

a.位

b.字节

c.字

d.BCD码

e.AND

f.OR

g.XOR

h.

TEST3.和指令ANDAL,55AND0F0H等效的指令是

,和MOVBX,0FHEQ1111B等效的指令是

a.ANDAL,55H

b.ANDAL,0F5H

c.ANDAL,50H

d.ANDAL,0F0H

e.MOVBX,0000H

f.MOVBX,0FH

g.MOVBX,0FFH

h.MOVBX,0FFFFH4.过程定义开始的伪指令是

宏定义结束的伪指令是

a.SEGMENT

b.MACRO

c.PROC

d.ASSUME

e.END

f.ENDS

g.ENDM

h.ENDP5.将数据37H定义为字节变量X1的语句是

,数据37H定义为字变量X2的语句是

a.X1DB37

b.X2DB37

c.X1DW37H

d.X2DW37H

e.X1DB37H

g.X2DB37H6.互换指令XCHG可以在两个寄存器之间互换数据,也可以在

之间互换数据。

a.寄存器

b.立即数

c.存储单元

d.堆栈7.对程序流向的控制和转移,就是对执行指令地址的修改。如在同一段内偏移,则修改

,如在两个段之间转移,则修改

a.IP

b.CS

c.CS和IP

d.CS或IP2/5/2023481.8088/8086CPU内部共有

个寄存器,其中有

个通用寄存器、

个变址寄存器、

个段寄存器。2.8088/8086CPU有

种数据寻址方式,其中采用

寻址方式的指令执行速度最快。3.IBM-PC计算机全部指令的集合称为它的

。这些指令按功能可以分为六大类:数据传送指令、算术指令、

、串处理指令、

。4.在不改变段寄存器的前提下,IBM-PC计算机内存寻址的最大范围是

字节。若CS=1234H,SS=2341H,DS=3412H,BP=8756H,则以BP寄存器间接寻址的非段超越的内存单元的物理地址是

。5.程序有顺序结构

四种结构。6.循环程序有两种结构形式,一种是

,另一种是

,当有可能一次也无需执行循环体时采用前者。7.8088/8086允许使用

个中断向量,每个中断向量占

个字节,系统的低段地址从

存放着中断向量表。8.下面是对DOS功能调用方法的简单说明:

(1)在AH寄存器中存入所要调用功能的

(2)根据所调用功能的规定设置

(3)用

指令转入子程序入口。

(4)相应的子程序运行完后,可以按规定取得

2/5/2023491、在指令系统中,段内、段间返回均为RET指令。试回答:(1)执行段内返回RET指令时,执行的操作是:(2)执行段间返回RET指令时,执行的操作是:2、ARY

DW

10

DUP(?)┇MOV

AL,TYPE

ARYMOV

BL,LENGTH

ARYMOV

CL,SIZE

ARY上述MOV指令序列执行后的结果是什么?3、设某数据段:

DATA

SEGMENTORG

20HNUM1=8NUM2=NUM1+10HDA1

DB'COMPUTER'DB

0AH,0DHCOUNT

EQU

$-DA1DA2

DW'CO','MP','UT','ER'DATA

ENDS试回答:(1)DA1的偏移地址是:___________________(2)COUNT的值是___________________________________(3)DA2+5字节单元的内容是_________________________________2/5/20235013.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来(

)。参考答案为:B

A.占内存空间小,但速度慢B.占内存空间大,但速度快

C.占内存空间相同,速度快D.占内存空间相同,速度慢14.在程序执行过程中,IP寄存器中始终保存的是(

)。参考答案为:B

A.上一条指令的首地址

B.下一条指令的首地址

C.正在执行指令的首地址D.需计算有效地址后才能确定地址15.PSW寄存器中共有(

)位条件状态位,有(

)位控制状态位。参考答案为:A

A.6、3

B.3、6

C.8、4

D.4、816.下列指令执行时出错的是(

)。参考答案为:A

A.ADDBUF1,BUF2

B.JMPDWORDPTRDAT[BX]

C.MOVAX,[BX+DI]NUM

D.TESTAL,08H17.已知(AX)=1234H,执行下述三条指令后,(AX)=(

)。参考答案为:D

MOVBX,AX

NEGBX

ADDAX,BXA.1234H

B.0EDCCH

C.6DCCH

D.0000H18.在下列指令中,(

)指令的执行会影响条件码中的CF位。参考答案为:D

A.JMPNEXT

B.JCNEXT

C.INCBX

D.SHLAX,119.串指令中的目的操作数地址是由(

)提供。参考答案为:C

A.SS:[BP]

B.DS:[SI]

C.ES:[DI]

D.CS:[IP]20.将DX的内容除以2,正确的指令是(

)。参考答案为:C

A.DIV2

B.DIVDX,2

C.SARDX,1

D.SHLDX,12/5/202351l.变量和标号的区别是________。

2.下述指令的目操作数是存放在堆栈段中,请填入正确答案。ADD____[BX],CH。

3.段地址和偏移地址为2000:5076的存储单元物理地址是____。

4.在下列程序段括号中,填入正确的答案。(

SEGMENTBUFDB12H,56HDATAENDS...CODE(

5.指出下列指令错误原因,填入括号中。A.MOVAX,BL;(

)B.MOVCS,AX;(

)C.DECGAMA[BX];(

)D.MOVES,5600H;(

)E.SUBAX,DS;(

6.下列语句在存贮器中分别为变量分配多少字节?请填入括号中。VR1DW?

;(

)VR2DW4DUP(?),2;(

)CONTEQU10;(

2/5/2023521.在8086/8088系统中,存储器是分段的,每段最大长度是_______字节,段内偏移地址从_______到_______。2.在程序调试时,显示某指令存放地址是2340:0056,则物理地址是_______。3.汇编语言源程序中的语句有三种类型,它们是_______语句,_______语句和_______语句。4.指令MOVAX,[BX+SI+10H]源操作数寻址方式是_______。5.执行段间返回指令RET时,将栈顶的一个字弹出到_______后,又弹出一个字到_______寄存器中。6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,执行NEGWORDPTR[DI]后,(31200H)=_______,(31201H)=_______。7.执行下列指令序列MOVAL,80HMOVBL,08HCBWIDIVBL则AH=_______AL=_______。8.已知数据定义语句ORG120HVECT1DW200HVECT2DWVECT1执行

MOVAX,VECT1AX=_______MOVBX,VECT2BX=_______。

2/5/202353判断以下各语句是否有错误,如有错误请说明错误原因1.MOV

AX,02.MOV

[1000H],1000H3.MOV

BL,AX4.MOV

[0],AX5.PUSH

PSW6.SHR

DX,BL7.MUL

AL,BL8.AND

AX,[1000]9.XCHG

CS,DS10.LDS

AL,[BX]2/5/2023541.下列语句在存储器中分别为变量数据区分配多少个字节单元?(1)VAR3

DD

10(2)VAR4

DW

4

DUP(?),22.设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?(1)JMP

BXIP=___________________(2)JMP

TABLE[BX]IP=___________________3.选用NOT,AND,OR

XOR逻辑指令编写一指令序列,实现将AL第0位,第2位同时置1,其他位变反。

1.指令

ARRAYDB100DUP(0,3DUP(1,2),0,3)

汇编后为ARRAY存储单元分配

个字节。2.指令

LEASI,DATA1可用指令(

)代替。3.中断向量表的地址范围是(

)。4.指令

MOVAX,256[BX][SI]的寻址方式是

。5.STRINGDB‘AB’,0,0,‘CD’,0,0,‘EF’,0,0请用DW伪指令改写上述语句,必须保持内存单元内容不变。(

2/5/2023551.在指令系统中,段内、段间返回均为RET指令。试回答:

(1)执行段内返回RET指令时,执行的操作是:

(2)执行段间返回RET指令时,执行的操作是:2.用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。DA1DB20HDUP(?)

DA2DW10H,45H,7856H3.已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。

MOVAL,

温馨提示

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

评论

0/150

提交评论