1、汇编语言与接口技术练习题一、填空题1. 8086/8088微处理器由BIU和EU两个关键部件组成。BIU的主要功能有取指令、传送数据和形成_(1)_;EU的主要功能有指令译码、执行指令、向BIU传送_(2)_、管理通用寄存器和标志寄存器。2. 在保护方式下,80386段寄存器中的值为_(3)_,其中高13位索引用于选择描述符表(GDT或LDT)中的_(4)_。3. I/O端口的编址方式通常有2种:_(5)_和_(6)_。4. 在保护模式下,存放256个中断描述符的内存区域称为中断描述符表(IDT)。在实地址模式下,中断描述符表就是_(7)_。5. CPU与I/O设备之间的接口信息有三种:_(8
2、)_、_(9)_和_(10)_。6. 在查询式输入操作中,须查询输入设备是否_(11)_;在查询式输出操作中,须查询输出设备是否忙(Busy)。7. 定时器/计数器8253/8254采用BCD码计数时,其最大的计数值是_(12)_,对应的计数初值为_(13)_。8. 并行通信接口8255A有3种工作方式,其中_(14)_只允许A口使用。9. 可编程中断控制器8259A中断请求优先级的设置有四种方式:全嵌套方式、_(15)_、优先级自动循环方式和优先级特殊循环方式。特殊全嵌套方式与全嵌套方式的不同之处在于特殊全嵌套方式除了允许高一级中断进入嵌套,还允许_(16)_的中断进入嵌套。10. 8259
3、A的操作命令字OCW1用于向_(17)_写入屏蔽信息。11. 一片DMA控制器8237A有4个通道,若采用3片8237A级联,共可提供_(18)_个通道。12. DMA控制器8237A有4种工作模式:单字节传输方式、_(19)_、请求传输方式和_(20)_。二、判断题1. 一个字存入存储器占有两个相邻的字节单元,低位字节存入高地址单元,高位字节存入低地址单元。( )2. 寄存器AX、CX和DX不能用作地址寄存器。( )3. MOV AX, 1000H 指令中的目的操作数是立即寻址。( )4. MOV AX, ES: BX+SI中目的操作数是带段跨越前缀的基址变址寻址。( )5. IN DX,
4、AL指令是从DX指定的端口地址读入一个字节到AL寄存器中。( )6. PUSH AL指令能将AL寄存器的内容压入堆栈。( )7. ADD AX, BX与ADC AX, BX指令得到的结果总是不同的。( )8. MOVS ES: BYTE PTRDI, DS: SI完全等价于MOVSB。( )9. 中断向量表就是各中断类型的处理程序的地址表。( )10. 除法错误中断是外中断。( )11. 8086/8088的指令中允许源操作数和目的操作数同时为存储器操作数。( )12. CMP指令与SUB指令的差别在于:前者只影响标志位。( )13. 伪操作语句ASSUME DS: DATA是给DS寄存器赋值
5、。( )14. 汇编语言源程序经汇编后,每条CPU指令和伪操作语句均产生一一对应的目标代码。( )15. 若带符号数溢出,则OF=1;若无符号数溢出,则CF=1。( )16. PUSH和POP指令只能作字操作。( )17. 逻辑左移指令SHL和算术左移指令SAL是两条不同的指令。( )18. 汇编语言语句中的操作数可以是常数、寄存器、标号和变量,但不能是表达式。( )19. 8086/8088指令系统中,每执行一条软中断指令INT n,就调用一个相应的中断服务程序。( )20. 当标志位IF为0时,所有硬件中断都不可能实现。( )21. 通常中断服务程序开始时使用STI指令的目的是开放所有被屏
6、蔽的中断。( )22. 8086系统把1MB存储空间分成两个512KB的存储体,一个全为偶地址,另一个全为奇地址,偶地址单元接数据总线的低8位,奇地址单元接数据总线的高8位。( )23. 一个基本总线周期包括四个状态:T1、T2、T3和T4。若存储器或I/O设备较慢,则可在T2与T3之间插入一个或多个等待周期TW。( )24. 在保护方式下,80386的六个段寄存器CS、DS、ES、SS、FS和GS中的内容不是段地址,而是段选择子。( )25. 80x86系列微机I/O端口采用I/O映射编址即独立编址,故不需要专门的I/O指令IN和OUT。( )26. 存储周期指的是存储器的读出周期。( )2
7、7. 在保护方式下,中断描述符表IDT可位于内存的任何位置。( )28. 8086/8088的中断系统中有两类软件中断:可屏蔽中断和不可屏蔽中断。( )29. 若8259A工作在非自动中断结束方式下,结束中断必须在中断服务程序结束时发一条结束中断的命令EOI,使相应的ISR位复位。( )30. 在IBM PC系列机中,并行通信接口8255A的A口用来接收来自键盘的扫描码。( )三、单选题1. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( )。A. 目标程序B. 源程序C. 汇编程序D. 可执行程序2. 8086/8088的存储器组织是将存储器划分为段,下列可作为段起始地址的是( )。
8、A. 185A2HB. 00020HC. 21004HD. 0AB568H3. 堆栈中当前出栈的存储单元地址是( )。A. SS*10H+SPB. SS*10H+BPC. SS*10+SPD. SS*10+BP4. 设DS=8225H,DI=3942H,指令NEG BYTE PTRDI中操作数的物理地址是( )。A. 85B92HB. 86192HC. BB690HD. 12169H5. 循环指令LOOPNZ终止循环的条件是( )。A. CX=0且ZF=0B. CX=0或ZF=1C. CX0且ZF=0D. CX0或ZF=16. 将寄存器AX的内容乘以4的正确指令序列是( )。A. SHR AX
9、, 1B. SHL AX, 1C. ROL AX, 1D. RCR AX, 1 SHR AX, 1 SHL AX, 1 ROL AX, 1 RCR AX, 17. 下列传送指令中有语法错误的是( )。A. MOV CS, AXB. MOV DS, AXC. MOV SS, AXD. MOV ES, AX8. 下列指令中能实现BX+SIAX是( )。A. XCHG AX, BXSIB. MOV AX, BX+SIC. LEA AX, BXSID. LEA AX, BXSI9. 下列指令中不能完成将累加器AX清零的是( )。A. SUB AX, AXB. XOR AX, AXC. OR AX, 0
10、D. AND AX, 010. 设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( )。A. 1FFFHB. 1998HC. 2002HD. 1FFEH11. 条件转移指令JB产生程序转移的条件是( )。A. CF=1B. CF=0C. CF=1或ZF=1D. CF=1或ZF=012. 在定义段时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( )。A. WORDB. PAGEC. BYTED. PARA13. 设DL=55H,执行指令后能使DL中的数据为0AAH的指令是( )。A. XOR DL, 0FFHB. OR DL, 0AAHC. NEG DLD. TEST
11、 DL, 0AAH14. 当SS=9876H, SP=4328H,执行POPF指令后,栈顶的物理地址是( )。A. 9CA8AHB. 9CA90HC. 9CA86HD. 0DB00H15. 语句BUF DW 10H DUP(3 DUP(2, 10H), 3, 5)汇编后,为变量BUF分配的存储单元的字节数是( )。A. 80HB. 100HC. 124D. 19216. 设AX=8520H,执行SAR AX, 1指令后,AX中的值是( )。A. 4290HB. 0A40HC. 0C290HD. 0C260H17. 下列指令执行后,能影响标志位的指令是( )。A. PUSHFB. POPFC.
12、JNLE OPRD. LOOPZ LOP18. 下面两个传送指令语句中源操作数寻址方式是( )。VAR1DW32HVAR2EQU32HMOVAX, VAR1MOVBX, VAR2A. 都是立即寻址B. 前一条指令是立即寻址,后一条指令是直接寻址C. 前一条指令是直接寻址,后一条指令是立即寻址D. 都是直接寻址19. 设变量ARRAY的偏移地址是0084H,下列指令执行后,AX中的内容是( )。MOVAX, ARRAY+4ARRAYDW6, 9, $+4, 10H, 1, $+4A. 0009B. 008CHC. 0090HD. 0010H20. 下列程序段的执行结果是( )。XORAX, AX
13、MOVCX, 5LAST:ADDAL, 6AAALOOPLASTA. AX=0030HB. AX=0300HC. AX=30D. AX=001EH21. 某处理器具有64GB的寻址能力,则该处理器地址线的条数是( )。A. 20条B. 24条C. 32条D. 36条22. .8086有两种基本的工作模式:最小模式和最大模式。当8086工作于最小模式时,MN/接( )。A. +12VB. 12VC. +5VD. 地23. 8K8位的RAM芯片所具有的地址线条数应是( )。A. 10B. 11C. 12D. 1324. 在查询传送方式中,CPU要对外设进行读出或写入操作之前,必须先对外设( )。A
14、. 发控制命令B. 进行状态检测C. 发端口地址D. 发读/写命令25. 所谓“端口”是指一些可以由CPU读或写的( )。A. RAMB. ROMC. 寄存器D. 缓冲器26. 一片可编程中断控制器8259A能管理( )级硬件中断。A. 4B. 8C. 16D. 6427. 利用可编程定时器/计数器8253/8254的计数器0产生10ms对称方波输出,若计数器0的输入时钟CLK0为1.1932MHz,则计数初值为( )。A. 1193.2B. 2386.4C. 11932D. 2386428. 当进行DMA操作时,CPU必须让出( )给DMAC。A. 总线B. 地址总线C. 数据总线D. 控制
15、总线29. 在总线读周期中,当CPU从慢速的输入设备读取数据时,需要在T4前插入( )状态。A. TWB. T2C. T3D. T30. 通常中断服务程序中使用STI指令的目的是( )。A. 开放所有屏蔽中断B. 允许低一级中断产生C. 允许高一级中断产生D. 允许同级中断产生31. 微机中控制总线传送的是( )。A. 存储器和I/O接口的地址码B. 微处理器向内存和I/O接口传送的命令信号C. 存储器和I/O设备向微处理器传送的状态信号D. B和C32. 在8086系统中,规定内存中地址( )的内存单元存放中断服务程序的入口地址(即中断向量),称为中断向量表。A. 00000H003FFHB
16、. 80000H803FFHC. 7F000H7F3FFHD. FFC00HFFFFFH33. 某一中断服务程序的入口地址存放在中断向量表的0080H0083H存储单元中,则该中断对应的中断类型号一定是( )。A. 1FHB. 20HC. 21HD. 22H34. 8086系统中若访问奇存储体的一个字节单元,则此时与A0是( )状态。A. 1,0B. 0,1C. 0,0D. 1,135. 在串行异步数据传送时,若传送格式为8位数据位,1位奇偶校验位,1位停止位,则一帧异步数据总共有( )位。A. 8B. 9C. 10D. 1136. 8086CPU中的DT/信号用于控制( )。A. 串操作时的
17、增址或减址B. 存储器的读或写C. I/O端口的输入或输出D. 数据总线的传送方向37. 8086CPU寻址I/O端口最多使用( )条地址线。A. 8B. 10C. 16D. 1238. 下列中断中,属于外部中断的是( )。A. 溢出中断B. 断点中断C. 可屏蔽中断D. 除法出错中断39. 在中断系统中,中断类型号是在( )的作用下送往CPU的。A. 中断响应信号B. 片选信号C. 中断请求信号INTRD. 读信号40. 读8259A的中断服务寄存器ISR必须先写入操作命令字( )。A. OCW1B. OCW2C. OCW3D. OCW1和OCW3四、程序分析题1. 已知AX=0FF61H,
18、CF=1MOVDX, 96SBBAX, DX执行上述指令序列后,AX=_,CF=_。2. 已知AX=0E33EH,DX=0F0F0HANDAH, DLXORAL, DHNEGAHNOTAL执行上述指令序列后,AH=_,AL=_。3.STCMOVCX, 0403HMOVAX, 0A433HSARAX, CLXCHGCH, CLSHLAX, CL上述程序段运行后,AX=_,CF=_。4.DA3EQUWORD PTR DA4DA4DB0ABH, 89HSHRDA3, 1MOVDX, DA3SHLDA4, 1MOVCX, DA3上述程序段运行后,CX=_,DX=_。5.VAR_BDB10 DUP(3,
19、 5, 7, 9)LEABX, VAR_BMOVCX, 10XORAX, AXLOP:ADDAL, BXCMPAL, 10JBNEXTINCAHSUBAL, 10NEXT:INCBXLOOPLOP上述程序段运行结束后,AH=_,AL=_。五、程序填空题1. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。CLRBMACROADDR, LMOVCX, LLEABX, ADDRBACK:_(1)_INCBX_(2)_ENDM2. 设AX和BX中的数一个为正数、一个为负数,下列程序段完成将正数送到PLW单元中存放。TESTAX, 8000H_(3)_MO
20、VPLW, BXJMPDONEK1:_(4)_DONE:3. 以BUF为首地址的字节单元中,存放了COUNT个无符号数,下列程序段是找出其中最大数并送入MAX单元中。BUFDB5, 6, 7, 58H, 62, 45H, 127, COUNTEQU$-BUFMAXDB?MOVBX, OFFSET BUFMOVCX, COUNT-1MOVAL, BXLOP1:INCBX_(5)_JAENEXTMOVAL, BXNEXT:_(6)_JNZLOP1MOVMAX, AL4. DA1数据区中有50个字节数据,下列程序段将每个数据的低四位变反,高四位不变,并依次存入DA2数据区中。MOVCX, 50LEA
21、SI, DA1LEADI, DA2K1:MOVAL, SI_(7)_MOVDI, ALINCSIINCDIDECCX_(8)_5. 下列程序段的功能是依次产生09的10个ASCII码,并存入BUF1数据区。BUF1DB10 DUP(?)LEABX, BUF1MOVCX, 10XORAL, ALLOP:MOVAH, ALADDAL, 30H_(9)_INCBX_(10)_INCALLOOPLOP6. 下列程序段用显示单个字符的2号DOS功能显示一字符串“STRING”。STR1DBSTRING, $MOVBX, OFFSET STR1LOP:MOVDL, BX_(11)_INT21H_(12)_
22、(13)_JNELOP7. 下列程序段完成将键盘输入的小写字母用大写字母显示出来。BACK:MOVAH, 01INT21HCMPAL, $JZEXITCMPAL, a_(14)_CMPAL, zJASHOW_(15)_SHOW:MOVDL, ALMOVAH, 02INT21HJMPBACKEXIT:RET8. 下列程序段采用冒泡法完成N个8位无符号数按升序排序。MOVCX, N_(16)_LP1: MOVDX, CX_(17)_LP2: MOVAL, BLOCKBXCMPAL, BLOCKBX+1_(18)_XCHGAL, BLOCKBX+1MOVBLOCKBX, ALCONT:_(19)_L
23、OOPLP2MOVCX, DX_ (20) _六、接口编程题1. 在IBM PC/AT及其兼容机系统中,硬件中断管理采用两片8259A。从片的INT与主片IR2相连,系统中主片8259A的口地址为20H和21H,从片的口地址为0A0H和0A1H。系统对主片8259A的初始化要求是:主片的IR2接从片的INT端;主片中断信号为边沿触发方式;级联但无缓冲;起始中断类型号为08H(IR0);正常的中断结束(即非自动结束中断);选择特殊的全嵌套方式。系统对从片8259A的初始化要求是:从片的INT接主片的IR2;从片中断信号为边沿触发方式;级联但无缓冲;起始中断类型号为70H(IR0);正常的中断结束
24、(即非自动结束中断);选择一般的全嵌套方式。根据上述要求,分别写出对主片和从片初始化的程序段。主片初始化程序段:从片初始化程序段:2. BIOS调用INT 14H提供了实现串行通信的功能。若串行通信的要求如下:使用串行口1(COM1);7位数据位;偶校验;1位停止位;波特率为9600。分别写出初始化通信端口、向通信端口发送字符和从通信端口接收字符的程序片断,设发送的字符为Y。初始化:发送字符:接收字符:3. 用可编程并行通信接口8255A作为打印机接口,如下图所示:D7D0A1A0CPUA6A5A4A3A2A7D7 D0D7D0 PB7PB0A1A0 PC2RD PC1WR8255APC5CS
25、CBAE3 Y7E2E1IORIOW74LS138D7D0ACKSTB打印机BUSYOBFBACKBCPU通过8255A与打印机相连,打印前先检查打印机的工作状态,当BUSY=1时表示打印机忙,则等待;BUSY=0时表示打印机不忙,这时CPU将要打印的数据送至8255A的B口并给打印机的端送一个负脉冲的打印选通信号,使数据进入打印机的数据缓冲器,然后打印机开始打印。打印机处理完送入的数据后向8255A发一个应答信号,这时又可继续送下一个数据,直到打印结束。可采用中断方式或查询方式进行打印,若采用查询方式,只须检测打印机的BUSY信号,即可决定是否送下一个数据。下面给出查询式打印程序,请填写空缺
26、处。DATASEGMENTPORTAEQU_(1)_PORTBEQU_(2)_PORTCEQU_(3)_CTRLPEQU_(4)_STRINGDBThis is a sample of printer interface using 8255ACOUNTEREQU$-STRINGDATAENDSCODESEGMENTASSUMECS: CODE, DS: DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AX_(5)_OUTCTRLP, ALMOVCX, COUNTERMOVBX, OFFSET STRINGLP1:MOVAL, BXOU
27、T_(6)_, ALLP2:INAL, PORTCANDAL, _(7)_JZLP2LP3:INAL, _(8)_ANDAL, 20H_(9)_INCBX_(10)_RETFMAINENDPCODEENDSENDMAIN附 录 8259A芯片初始化命令字ICW1(必须写入8259A的偶地址端口):IC4SNGLADILTIM1A5A6A7D7 D6 D5 D4 D3 D2 D1 D00不要ICW41要ICW40级联1单片80X86不用0边沿触发1电平触发80X86不用特征位T3T4T5T6T7D7 D6 D5 D4 D3 D2 D1 D0 8259A中断类型初始化命令字ICW2(必须写入825
28、9A的奇地址端口): 8259A主片初始化命令字ICW3(必须写入8259A的奇地址端口):IR0IR1IR2IR3IR4IR5IR6IR7D7 D6 D5 D4 D3 D2 D1 D0 8259A从片初始化命令字ICW3(必须写入8259A的奇地址端口):ID0ID1ID200000D7 D6 D5 D4 D3 D2 D1 D0 8259A控制初始化命令字ICW4(必须写入8259A的奇地址端口):mPMAEOIM/SBUFSFNM000D7 D6 D5 D4 D3 D2 D1 D008080/8085系统180X86系统0非自动结束中断1自动结束中断0从片1主片全嵌套方式0特殊全嵌套方式1
29、非缓冲方式0缓冲方式1M0M1M2M3M4M5M6M7D7 D6 D5 D4 D3 D2 D1 D0 8259A中断屏蔽命令字OCW1(必须写入8259A的奇地址端口): 8259A控制中断和优先级循环的操作命令字OCW2(必须写入8259A的偶地址端口):L0L1L200EOISLRD7 D6 D5 D4 D3 D2 D1 D0 8259A屏蔽查询状态命令字OCW3(必须写入8259A的偶地址端口):RISRRP10SMMESMM0D7 D6 D5 D4 D3 D2 D1 D00RR=1时,读IRR1RR=1时,读ISR0禁止读IRR和ISR1允许读IRR和ISR0非特殊屏蔽方式1特殊屏蔽方
30、式0禁止特殊屏蔽方式1允许特殊屏蔽方式非查询方式0查询方式1 8255方式选择控制字:D0D1D2D3D4D5D61A组方式00 方式001 方式11x方式2A口I/O0输出,1输入C下半口I/O0输出,1输入B口I/O0输出,1输入B组方式0方式0,1方式1C上半口I/O0输出,1输入D0D1D2D3D4D5D6D7000=110波特001=150波特010=300波特011=600波特100=1200波特101=2400波特110=4800波特111=9600波特奇偶校验00=无01=奇校10=无11=偶校数据长度00=5位01=6位10=7位11=8位停止位长度0=1位1=2位 串行通信的BIOS功能调用INT 14H1. 初始化通信端口入口:AH=00H,AL=初始化参数(格式见右图)DX=端口标识(COM1=0,COM2=1)出口:AH=线路状态字节 AL=Modem状态字节2. 向通信端口发送字符入口:AH=01H,AL=要发送的字符 DX=端口标识3. 从通信端口接收字符入口:AH=02H,DX=端口标识出口:AL=接收的字符15