资源描述
第一章 微型计算机的基础知识 习题1. 计算机分那几类?各有什么特点?2. 简述微处理器、微计算机及微计算机系统三个术语的内涵。3. 80X86微处理器有几代?各代的名称是什么?4. 将十进制数 (1)+107/128 (2)35/64化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位)。5. 将十进制数 (1)52,(2)127化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位)。6. 下列数中最小的数为( )。 A、101001B B、52Q C、101001(BCD) D、233H7. 下列数中最大的数为( )。 A、10010101B B、227Q C、96H D、1438. 某数在计算机中用8421BCD码表示为0111 1000 1001,其真值为( )。 A、789 B、789H C、1929 D、11110001001B9. 计算机内部采用_数字进行运算 A八进制 B十进制 C二进制 D十六进制10. 英文小写字母“c”的ASCII码为1100011,英文字母“f”的ASCII码为十进制_ A100 B101 C102 D10311. 按对应的ASCII码值来比较,不正确的是_A“b”比”a”大 B“f”比”F”大 C“9”比”0”大 D“F”比”f”大 参考答案1. 答:传统上分为三类:大型主机、小型机、微型机。大型主机一般为高性能的并行处理系统, 存储容量大,事物处理能力强,可为众多用户提供服务。小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。2. 答:微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响。微计算机包括微处理器、存储器、I/O接口电路及系统总线。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。3. 答:从体系结构上可分为3代:8080/8085:8位机;8086/8088/80286:16位机; 80386/80486:32位机。4.答案:(1)原、反、补码都是:01101011,(2)原码:11000110,反码:10111010,补码:101110015.答案:(1)原码:10110100,反码:11001011,补码:11001100 (2)原码:11111111,反码:10000000,补码:100000016.C 7.B 8.A 9.C 10.C 11.D第二章 8086微处理器 习题1、8086是多少位的微处理器?为什么?2、EU与BIU各自的功能是什么?如何协同工作?3、8086/8088与其前一代微处理器8085相比,内部操作有什么改进?4、8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?5、8086对存储器的管理为什么采用分段的办法?6、在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。7、给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。 8、8086/8088为什么采用地址/数据引线复用技术?9、8086与8088的主要区别是什么?10、怎样确定8086的最大或最小工作模式?最大最小模式产生控制信号的方法有何不同?11、8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?12、8086基本总线周期是如何组成的?各状态中完成什么基本操作?13、结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号的功能。14、什么是总线请求?8086在最小工作模式下,有关总线请求的信号引脚是什么?15、简述在最小工作模式下,8086如何响应一个总线请求?16、在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接的?BHE#信号起什么作用?17、“80386是一个32位微处理器”,这句话的涵义主要指的是什么? 参考答案1、答:8086是16位的微处理器,其内部数据通路为16位,对外的数据总线也是16位。2、答:EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。3答:8085为8位机,在执行指令过程中,取指令与执行执令都是串行的。8086/8088由于内部有EU和BIU两个功能部件,可重叠操作,揔高了处理器的性能。4、答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。5、答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间。6、答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。7、答:物理地址:320F8H。8、答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。9、答:8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节。10、答:引线MN/MX#的逻辑状态决定8086的工作模式,MN/MX#引线接高电平,8086被设定为最小模式,MN/MX#引线接低电平,8086被设定为最大模式。最小模式下的控制信号由相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入为8086的S2#S0#三条状态信号引线提供。11、答:标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1。处理器从FFFFOH存储单元取指令并开始执行。12、答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。13、答:ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口“准备好”信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。14、答:系统中若存在多个可控制总线的主模块时,其中之一若要使用总线进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的过程。8086在最小工作模式下有关总线请求的信号引脚是HOLD与HLDA。15、答:外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程。16、答:8086为16位处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,命名为偶字节体和奇字节体;偶体的数据线连接D7D0,“体选”信号接地址线A0;奇体的数据线连接D15D8,“体选”信号接BHE#信号;BHE#信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。17、答:指80386的数据总线为32位,片内寄存器和主要功能部件均为32位,片内数据通路为32位。第三章 指令系统 习题1. 根据下列要求编写一个汇编语言程序:(1)代码段的段名为COD_SG(2)数据段的段名为DAT_SG(3)堆栈段的段名为STK_SG(4)变量HIGH_DAT所包含的数据为95(5)将变量HIGH_DAT装入寄存器AH,BH和DL(6)程序运行的入口地址为START2. 指出下列程序中的错误: STAKSG SEGMENT DB 100 DUP(?) STA_SG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG END CDSEG SEGMENT MAIN PROC FAR START: MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END3. 将下列文件类型填入空格:(1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map 编辑程序输出的文件有_; 汇编程序输出的文件有_; 连接程序输出的文件有_。4. 下列标号为什么是非法的? (1) GET.DATA (2) 1_NUM (3) TEST-DATA (4) RET (5) NEW ITEM5. 下面的数据项定义了多少个字节? DATA_1 DB 6 DUP(4 DUP(0FFH) 6. 对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么? DTSEG SEGMENT | DTSEG SEGMENT ORG 10H | ORG 10H DATA1 DB 72H | DATA1 DW 7204H DB 04H | DTSEG ENDS DTSEG ENDS |7. 下面的数据项设置了多少个字节? (1) ASC_DATA DB 1234 (2) HEX_DATA DB 1234H8. 执行下列指令后, AX寄存器中的内容是什么? TABLE DW 10,20,30,40,50 ENTRY DW 3 . MOV BX,OFFSET TABLE ADD$ BX,ENTRY MOV AX,BX9. 指出下列指令的错误:(1) MOV AH,BX (2) MOV SI,BX (3) MOV AX,SIDI (4) MOV AX,BXBP (5) MOV BX,ES:AX (6) MOV BYTE PTRBX,1000 (7) MOV AX,OFFSET SI (8) MOV CS,AX (9) MOV DS,BP10. DATA SEGMENT TABLE_ADDR DW 1234H DATA ENDS . MOV BX, TABLE_ADDR LEA BX, TABLE_ADDR请写出上述两条指令执行后, BX寄存器中的内容。11. 设(DS)=1B00H, (ES)=2B00H, 有关存储器地址及其内容如右图所示,请用两条指令把X装入AX寄存器。 1B00:2000H 8000H 1B00:2002H 2B00H 2B00:8000H X12. 变量DATAX和DATAY定义如下: DATAX DW 0148H DW 2316H DATAY DW 0237H DW 4052H按下述要求写出指令序列:(1)DATAX和DATAY中的两个字数据相加, 和存放在DATAY和DATAY+2中。(2)DATAX和DATAY中的两个双字数据相加, 和存放在DATAY开始的字单元中。(3)DATAX和DATAY两个字数据相乘(用MUL)。(4)DATAX和DATAY两个双字数据相乘(用MUL)。(5)DATAX除以23(用DIV)。(6)DATAX双字除以字DATAY(用DIV)。13. 试分析下面的程序段完成什么操作? MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL14. 用其他指令完成和下列指令一样的功能:(1) REP MOVSB (2) REP LODSB (3) REP STOSB (4) REP SCASB15.编写程序段, 比较两个5字节的字符串OLDS和NEWS, 如果OLDS字符串与NEWS不同, 则执行NEW_LESS, 否则顺序执行程序。16. 假定AX和BX中的内容为带符号数, CX和DX中的内容为无符号数, 请用比较指令和条件转移指令实现以下判断:(1) 若DX的值超过CX的值,则转去执行EXCEED(2) 若BX的值大于AX的值,则转去执行EXCEED(3) CX中的值为0吗? 若是则转去执行ZERO(4) BX的值与AX的值相减, 会产生溢出吗? 若溢出则转OVERFLOW(5) 若BX的值小于AX的值,则转去执行EQ_SMA(6) 若DX的值低于CX的值,则转去执行EQ_SMA 17. 假如在程序的括号中分别填入指令: (1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20试说明在三种情况下, 当程序执行完后, AX、BX、CX、DX四个寄存器的内容分别是什么?TITLE EXLOOP.COMCODESG SEGMENTASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100HBEGIN: MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04L20: INC AX ADD BX,AX SHR $ DX,1 ( ) RETCODESG ENDSEND BEGIN18. 变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。19. 有两个3位的ASCII数串ASC1和ASC2定义如下: ASC1 DB 578 ASC2 DB 694 ASC3 DB 0000 请编写程序计算ASC3ASC1+ASC2。20. 假设(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 请写出下列各条指令单独执行完后, 有关寄存器及存储单元的内容, 若影响条件码请给出条件码SF、ZF、OF、CF的值。 (1) SBB AX,BX (2) CMP AX,WORD PTRSI+0FA0H (3) MUL BYTE PTRBX (4) AAM (5) DIV BH (6) SAR AX,CL (7) XOR AX,0FFE7H (8) REP STOSB (9) JMP WORD PYRBX (10) XCHG AX,ES:BX+SI参考答案1. 答案:DATSG SEGEMNTHIGH_DAT DB 95DAT_SG $ ENDSSTK_SG SEGMENT DW 64 DUP(?)STK_SG ENDSCOD_SG SEGMENTMAIN PROC FARASSUME CS: COD_SG, DS: DAT_SG, SS: STK_SGSTART: MOV AX, DAT-SG MOV DS, AX MOV AH, HIGH_DAT MOV BH, AH MOV DL, AH MOV AH, 4CHINT 21HMAIN ENDPCOD_SG ENDSEND START2. 答案:改正后:STAKSG SEGMENT DB 100 DUP(?)STAKSG ENDSDTSEG SEGMENTDATA1 DB ?DTSEG ENDSCDSEG SEGMENTMAIN PROC FARASSUME CS: CDSEG, DS: DTSEG, SS: STAKSGSTART: MOV AX, DTSEG MOV DS, AX MOV AL, 34H ADD AL, 4FH MOV DATA1, AL MOV AH, 4CH INT 21HMAIN ENDPCDSEG ENDSEND START3. 答案:编辑程序输出文件: (4)汇编程序输出文件: (1), (3), (5) 连接程序输出文件: (2), (6)4. 答案:非法标号: (1)因为.只允许是标号的第一个字符(2)第一个字符不能为数字 (3)不允许出现-(4)不能是保留字,如助记符 (5)不能有空格5. 答案:24字节6. 答案:不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.7. 答案:(1) 设置了4个字芢 (2) 设置了2个字节8n 答案:(AX)=409. 答案:(1) 源、目的字长不一致 (2) 源、目的不能同时举存贮器寻址方式 (3) 基坂变址方式不能有 SI和DI的组合 (4) 基址变址方式不能有 BX和BP的组合 (5) 在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式 (6) 1000超出一个字节的表数范围 (7) OFFSET只用于简单变量,应去掉(8) CS不能作为目的寄存器(9) 段地址不能直接送入数据段寄存器10. 答案: MOV BX,TABLE_ADDR ; 执行后(BX)=1234H LEA BX,TABLE_ADDR ; 执行后(BX)=OFFSET TABLE_ADDR11、答案: LES BX, 2000H MOV AX, ES: BX12. 答案:(1) MOV AX, DATAX ADD AX, DATAYMOV BX, DATAX+2 ADD BX, DATAY+2MOV DATAY, AX MOV DATAY+2, BX (2) MOV AX, DATAX ADD DATAY, AX MOV AX, DATAX+2 ADC DATAY+2, AX (3) MOV AX, DATAX MUL DATAY MOV DATAY,AX MOV DATAY+2,DX (4) MOV AX,WORD PTR DATAX MOV BX,WORD PTR DATAY MUL BX MOV RESULT,AX MOV RESULT+2,DX MOV AX,WORD PTR DATAX MOV AX,WORD PTR DATAY+2 MUL BX ADD RESULT+2,AX ADC RESULT+4,DX MOV AX,WORD PTR DATAX+2 MOV BX,WORD PTR DATAYMUL BX ADD RESULT+2,AXADC RESULT+4,DXMOV AX,WORD PTR DATAX+2MOV BX,WORD PTR DATAY+2MUL BXADD RESULT+4,AXADC RESULT+6,DX (5) MOV AX, DATAX MOV BL, 23 DIV BL MOV BL,AH MOV AH, 0 MOV DATAY, AX ;存放商 MOV AL,BL MOV DATAY+2, AX ;存放余数(6) MOV AX, DATAXMOV DX, DATAX+2DIV DATAY MOV DATAY, AXMOV DATAY+2, DX13. 答案: 将DX: AX中的双字左移4位(乘16)14. 答案:(1)LOOP1:MOV AL,BYTE PTR SIMOV ES:BYTE PTR DI, ALINC SI 或: DEC SIINC DI 或: DEC DILOOP LOOP1(2) LOOP1:MOV AL, BYTE PTR SIINC SI 或: DEC SILOOP LOOP1(3) LOOP1:MOV ES:BYTE PTR DI, ALINC DI 或: DEC DILOOP LOOP1(4) LOOP1:CMP AL,ES:BYTE PTR DIJE EXITINC DI 或: DEC DILOOP LOOP1EXIT:15. 答案:LEA SI, OLDSLEA DI, NEWSMOV CX, 5CLDREPZ CMPSBJNZ NEW_LESS16. 答案:(1) CMP DX, CX JA EXCEED(2) CMP BX, AX JG EXCEED(3) CMP CX, 0 JE ZERO(4) SUB BX, AX JO OVERFLOW(5) CMP BX, AX JL EQ_SMA(6) CMP DX, CX JB EQ_SMA17. 答案: (1)(AX)= 5 (BX)= 16 (CX)= 0 (DX)= 0(2)(AX)= 2 (BX)= 4 (CX)= 3 (DX)= 1(3)(AX)= 3 (BX)= 7 (CX)= 2 (DX)= 0 18. 答案:MOV AX, 0MOV AL, N1+1SUB AL, N2+1AASMOV DL, ALMOV AL, N1SBB AL, N2AASMOV DH, AL19. 答案: CLC MOV CX, 3 MOV BX, 2BACK: MOV AL, ASC1BX ADC AL, ASC2BX AAAOR ASC3BX+1, AL DEC BX LOOP BACK RCL CX, 1 OR ASC3BX, CL20. 答案:(1) (AX)=0F05FH, (SF)=1, (ZF)=0, (OF)=0, (CF)=1(2) (SF)=1, (ZF)=0, (OF)=1, (CF)=1(3) (AX)=0240H, (OF)=1, (CF)=1(4) (AX)=0906H, (SF)=0, (ZF)=0(5) (AX)=20ACH(6) (AX)=0103H, (CF)=0(7) (AX)=0DF87H, (CF)=0, (OF)=0, ,SF)=1, (ZF)=0(8)(23000H)(23004H)=60H, 不影响标志位(9) (IP)=0A006H, 不影响标志位(10) (AX)=00B0H, (25060)=2060H, 不影响标志位 第四章 汇编语言程序设计 习题1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。2. 编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则显示“NO MATCH”。3. 试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息: (1)如果3个数都不相等则显示0; (2)如果3个数中有2个数相等则显示2; (3)如果3个数都相等则显示3。4. 已知整数变量A和B,试编写完成下述操作的程序: (1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中; (2)若两个数均为奇数,则两数分别加1,并存回原变量; (3)若两个数均为偶数,则两变量不变。5. 把0100之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1)。6. 分析下列程序的功能,写出堆栈最满时各单元的地址及内容。SSEG SEGMENT STACKAT 1000H ; 堆栈的段地址为1000H DW 128 DUP(?)TOS LABEL WORDSSEG ENDS; - - - - - - DSEG SEGMENT DW 32 DUP(?)DSEG ENDS; - - - - - - - - - - -CSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG, DS:DSEG,SS:SSEGSTART: MOV AX,SSEG MOV SS,AX- MOV AX,DSEG MOV DS,AX MOV AX,4321H $ CALL HTOARETN: MOV AH,4CH INT 21H MAIN ENDP; - - - - - - - - - HTOA PROC NEAR CMP AX,15 JLE B1 PUSH AX PUSH BP MOV BP,SP MOV BX,BP+2 AND BX,0FH MOV BP+2,BX POP BP MOV CL,4 SHR AX,CL CALL HTOAB1: POP AXB2: ADD AL,30H JL PRT ADD AL,07 PRT: MOV DL,AL MOV AH,2 INT 21H RET HTOA ENDPCSEG ENDS ; ; - - - - - - - - - - - - - END START 7. 写出分配给下列中断类型号在中断向量表中的物理地址。 (1) INT 12H (2) INT 88. 试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束。两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。9. 给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?10. 编写一个程序,接收仮键盘输入的10个十进制数字,输入回輦符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为 辗入数字: 0,1,2,3,45,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4 参考答案1. 答案: abc: mov ah,1 int 21h cmp al,a jb stop cmp al,z ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abcstop: ret2. 答案:datarea segment string1 db asfioa string2 dbxcviyoaf mess1 db MATCH,$ mess2 db NO MATCH,$ datarea endsprognam segmentmain proc far assume cs:prognam,ds:datareastart:push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax begin: mov cx, string2-string1 mov bx, mess1-string2 cmp bx,cx jnz dispno lea dx,addr lea si,string1 lea di,string2 repe cmpsb jne dispno mov ah,9 lea dx,mess1 int 21h retdispno: mov ah, 9 lea dx, mess2 int 21h ret main endp prognam ends end start3. 答案: data segmentarray dw 3 dup(?)data endscode segmentmain proc far assume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov cx,3lea si,arraybegin: push cx mov cl,4 mov di,4 mov dl, mov ah,02 int 21h mov dx,0input: mov ah,01int 21hand al,0fhshl dx,clor dl,aldec dijne inputmov si,dxadd si,2pop cxloop begincomp: lea si,array mov dl,0 mov ax,si mov bx,si+2 cmp ax,bx jne next1 add dl,2next1:cmp si+4,ax jne next2 add dx,2next2: cmp si+4,bx jne num add dl,2num: cmp dx,3 jl disp mov dl,3disp:mov ah,2 add dl,30h int 21h retmain endpcode ends end start4. 答案: dseg segment a dw ? b dw ?dseg endscseg segmentmain proc farassume cs:cseg,ds:dsegstart: push ds sub ax,ax push ax mov ax,dseg mov ds,axbegin: mov ax,a mov bx,b xor ax,bx test ax,0001 jz class test bx,0001 jz exit xchg bx,a mov b,bx jmp exitclass: test bx,0001 jz exit inc b inc aexit: retmain endpcseg ends end start5. 答案:dseg segmentgrade dw 30 dup(?)rank dw 30 dup(?)dseg endscseg segmentmain proc farassume cs:cseg, ds:dseg, es:dsegstart: push ds sub ax,ax push ax mov ax,dseg mov ds,ax mov es,axbegin: mov di,0 mov cx,30loop1: push cx mov cx,30 mov si,0 mov ax,gradedi mov dx,0loop2: cmp gradesi,ax jbe go_on inc dxgo_on: add si,2 loop loop2 pop cx inc dx mov rankdi,dx sdd di,2 loop loop1 retmain endpcseg ends end start6. 答案:1000:0F2H B11000:0F4H 31000:0F6H B11000:0F8H 21000:0FAH B11000:0FCH 11000:0FEH RETN1000:100H7. 答案: (1) 00048h (2) 00020h8. 答案: mov si, 0 mov di, 0test12:in al, 0024h test al, 08 jnz exit in al,0036h test al, 08 jnz exitdev1: in al, 0024h test al, 01 jz dev2 in al, 0026h mov buffersi, al inc sidev2: in al, 0036h test al, 01 jz test12 in al, 0038h mov buff2di,al inc di jmp test12exit: ret9. 答案:(SP) = 00FA(SS) = 0300(IP) = 0040(FLAGS) = 0040堆栈内容: 00A1H0900H0240H 10. 答案:scode db 7,5,9,1,3,6,8,0,2,4buffer db 10 dup(?); mov si,0 mov cx,10 lea bx,scodeinput: mov ah,01 int 21h cmp al,0ah jz exit and al,0fh xlat mov buffersi,al inc si loop inputexit: ret 第五章 输入输出接口概述 习题1试说明一般中断系统的组成和功能。2什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?3什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?4试叙述基于8086/8088的微机系统处理硬件中断的过程。5在PC机中如何使用“用户中断”入口请求中断和进行编程?68259A中断控制器的功能是什么?78259A初始化编程过程完成那些功能?这些功能由那些ICW设定?88259A在初始化编程时设置为非中断自动结束方式,中断服务程序编写时应注意什么?98259A的初始化命令字和操作命令字有什么区别?它们分别对应于编程结构中那些内部寄存器?108259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别?11若8086系统采用单片8259A中断控制器控制中断,中断类型码给定为20H,中断源的请求线与8259A的IR4相连,试问:对应该中断源的中断向量表入口地址是什么?若中断服务程序入口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定位?12试按照如下要求对8259A设定初始化命令字:8086系统中只有一片8259A,中断请求信号使用电平触发方式,全嵌套中断优先级,数据总线无缓冲,采用中断自动结束方式。中断类型码为20H27H,8259A的端口地址为B0H和B1H。13比较中断与DMA两种传输方式的特点。 参考答案1答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑。2答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断类型码乘4得到向量表的入口
展开阅读全文