微机原理习题解答 (2).doc_第1页
微机原理习题解答 (2).doc_第2页
微机原理习题解答 (2).doc_第3页
微机原理习题解答 (2).doc_第4页
微机原理习题解答 (2).doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第1章 汇编语言基础知识习题解答1.1 什么是汇编语言?汇编语言的特点是什么?;答:为了克服机器语言难以记忆、表达和阅读的缺点,人们采用具有一定含义的符号作为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。汇编语言是汇编指令集、伪指令集和使用它们规则的统称。汇编语言的特点是:(1)执行速度快。(2)程序短小。(3) 可以直接控制硬件。(4) 可以方便地编译。(5)辅助计算机工作者掌握计算机体系结构。(6)程序编制耗时,可读性差。(7)程序可移植性差。1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。 127 1021 0.875 6.25答: 1111111B;177Q;7FH 1111111101;1775Q;3FDH 0.111 B;0.7Q;0.EH 110.01B;6.2Q;6.4H1.3 把下列二进制数转换成十进制数。 1001.11 101011.10011 111.011 1011.1答: 9.75D 43.59375D 7.375D 11.5D1.4 把下列八进制数转换成十进制数。 573.06 75.23 431.7 123.45答: 379.09375D 61.296875D 281.875 83.5781251.5 把下列十六进制数转换成十进制数。 0D5.F4 8BA.7C 0B2E.3A 6EC.2D答: 213.953125D 2234.484375 2862.2265625 1772.175781251.6 把下列英文单词转换成ASCII编码的字符串。 Upper Blow Computer What答: 55H,70H,70H,65H,72H 53H,6CH,6FH,77H 43H,6FH,6DH,70H,75H,74H,65H,72H 57H,68H,61H,74H1.7 求下列带符号十进制数的8位基2码补码。 +127 2 128 +2答: 01111111B 11111110B 10000000B 00000010B1.8 求下列带符号十进制数的16位基2码补码。 +628 9 1234 +3249答: 0000001001110100B 1111111111110111B 1111101100101110B 110010110001B1.9 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 68+(53) 6853 68(53) (68)53答: 0FH 0FH 0A1H 87H1.10 汉字在输入、存储、输出过程中所使用的汉字编码是否一样?使用的是什么编码?答:在汉字的输入、存储、输出过程中所使用的汉字编码是不一样的,输入时有输入编码,存储时有汉字机内码,输出时有汉字字形码。 第2章 IBM-PC系统结构习题解答2.1什么是微型计算机?微型计算机主要由哪几部分组成?其主要功能是什么?答:微型计算机是指以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件控制器和运算器的微处理器为核心所构造出的计算机系统。微型计算机主要由微处理器、存储器、系统总线、I/O接口电路和I/O设备组成。微处理器用来执行程序指令,完成所有的算术和逻辑运算及全机的控制工作;存储器用来存放程序和数据;系统总线是计算机各功能部件之间进行信息传输的通道;I/O设备是指微型计算机配备的输入输出设备,也称外围设备(简称外设),用来提供具体的输入输出手段。2.2 8086/8088CPU由哪两部分组成?它们的主要功能是什么?答:8086/8088CPU由总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)两部分组成。总线接口部件BIU是8086与系统总线的接口,负责CPU与存储器、IO端口传送数据;执行部件EU负责指令的执行和数据的运算。2.3 8086/8088CPU有哪些寄存器?各有什么用途?答:8086/8088内部的寄存器可分为通用寄存器、专用寄存器和段寄存器。8086/8088有8个16位的通用寄存器,包括4个数据寄存器(AX、BX、CX、DX)、2个变址寄存器(SI和DI)和2个指针寄存器(BP和SP)。它们均可以用于保存算术逻辑运算中的操作数和运算结果,但每个寄存器又有各自规定的专门用途。AX通常称为累加器(Accumulator),用于算术运算、逻辑运算以及与外设传送信息等,它是汇编编程中使用频率最高的一个寄存器。BX称为基址寄存器(Base Address Register) ,常用来存放存储器地址。CX称为计数寄存器(Count Register) ,常用来保存计数值。DX称为数据寄存器(Data Register) ,常用来存放双字长数据的高16位,也用于存放I/O的端口地址。SI称为源变址(Source Index)寄存器,DI称为目的变址(Destination Index)寄存器,主要用于存储器寻址方式时提供偏移地址。SI和DI一般与数据段寄存器DS联用,用来确定数据段中某存储单元的地址。在串操作指令中,还有专用的用法:SI和数据段寄存器DS联用,DI和附加段寄存器ES联用,分别用来寻址数据段中的源操作数和附加段的目的操作数。BP称为基址指针(Base Pointer)寄存器,SP称为堆栈指针(Stack Pointer)寄存器,它们主要用于指向堆栈段中的存储单元。BP与堆栈段寄存器SS联用,用来确定堆栈段中某存储单元的地址,BP主要用于给出堆栈中基地址,用它可直接存取堆栈中的数据;SP与堆栈段寄存器SS联用,用来确定堆栈段中栈顶的地址,SP保存堆栈栈顶的偏移地址,用它只可访问栈顶。IP(Instruction Pointer)为指令指针寄存器,用来存将要执行的指令在代码段中的偏移地址。它和代码段寄存器CS一起可以确定下一条的指令的物理地址。标志寄存器FLAGS也被称为程序状态寄存器PSW,用来存放状态标志和控制标志的寄存器。8086/8088有4个16位段寄存器,分别为代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。段寄存器是根据内存分段的管理模式而设置的,专门用于存放段地址。CS(Code Segment Register)称为代码段寄存器,用来存放代码段的段地址;DS(Data Segment Register)称为数据段寄存器,用来存放数据段的段地址;ES(Extra Segment Register)称为附加段寄存器,用来存放附加段的段地址;SS(Stack Segment Register)称为堆栈段寄存器,用来存放堆栈段的段地址。2.4 8086/8088CPU哪些寄存器可以用来指示存储器地址?答:BX、SI、DI、BP、SP、IP、CS、DS、ES、SS。2.5标志寄存器中有哪些状态标志和控制标志?它们每一位所表示的含义是什么?答:标志寄存器中有6个状态标志(CF、PF、AF、ZF、SF、OF)和3个控制标志(TF、IF、DF)。状态标志用来记录程序运行结果的状态信息,它们是根据有关指令的执行结果由CPU自动设置的,常用作条件转移指令的转移控制条件。CF(Carry Flag)进位标志,主要用来反映运算是否产生进位或借位,如果运算结果的最高位有效位产生进位或借位时,进位标志置1,即CF1,否则置0。PF(Parity Flag)奇偶标志,用于反映运算结果中“1”的个数的奇偶性,当运算结果最低字节中“1”的个数为零或偶数时,PF1,否则PF0。AF(Auxiliary carry Falg)辅助进位标志,记录运算时第3位(低半字节)产生的进位值,辅助进位标志一般在BCD码运算中作为是否进行十进制调整的判断依据。ZF(Zero Flag)零标志,用来反映运算结果是否为0,运算结果为0时ZF位置1,否则置0。SF(Sign Flag)符号标志,记录运算结果的符号,它与运算结果的最高位相同,结果为负时置1,否则置0。OF(Overflow Flag)溢出标志,用于反映有符号数运算结果是否溢出,在运算过程中,如操作数超出了机器能表示的范围,则称为溢出,此时OF位置1,否则置0。控制标志用于控制处理器的操作,可根据需要用指令设置。TF(Trap Flag)追踪标志,也称单步标志,当追踪标志TF为1时,CPU进入单步方式即CPU每执行一条指令后,产生一个单步中断,通常用于程序的调试;当追踪标志TF为0时,处理器正常工作。IF(Interrupt Flag)中断标志,当IF=1时,CPU可以响应可屏蔽中断请求;当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。DF(Direction Flag)方向标志,用于在串处理指令中控制地址的变化方向,当DF位为1时,每次操作后变址寄存器SI和DI自动减少,串处理从高地址向低地址方向处理;当DF为0时,则使SI和DI自动增加,使串处理从低地址向高地址方向处理。2.6有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。答:2000H4BH2001H3AH2002H2003H2004HEFH2005H10H2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?答:20位的物理地址由16位的段地址和16位的段内偏移地址组成。物理地址PA(Physical Address)的计算方法如下:物理地址PA=段地址10H+偏移地址2.8在DEBUG程序中,一条指令语句表示为2000:0030 MOV AL,8。请问:段地址、偏移地址和物理地址分别为多少?存放段地址和偏移地址的寄存器是哪两个?答:段地址:2000H。偏移地址:0030H。物理地址:20030H。存放段地址的寄存器是CS。存放偏移地址的寄存器是IP。 第3章 8086/8088寻址方式和指令系统习题解答一、填空3.1 指出下列指令源操作数的寻址方式:MOVAX,ARRAYSI; MOVAX,ES:BX; MOVAX,100; MOVAX,BX+DI; MOVAX,BX; MOVAX,2000H; MOVAX,ARRAYBXSI; MOVAX,DI+20H; 答:寄存器相对寻址;寄存器间接寻址;直接寻址;基址变址寻址;寄存器寻址;立即数寻址;相对基址变址寻址;寄存器相对寻址。3.2 假设(SP)=100H,(SS)=1000H,执行PUSHBP指令后,栈顶的物理地址是 。答:10102H3.3 段地址和偏移地址为3FFFH:1234H,它的物理地址是 ,段地址和偏移地址为1000H:000FH,它的物理地址是 。答:41224H,1000FH3.4 若要测试AL寄存器中操作数的第0,3,4,7位是否均为0,然后根据测试结果实现条件转移,可使用 指令,以产生转移条件。这条指令执行后将影响的标志位是 。答:TEST AL,0A9H;SF,ZF,PF3.5 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后AX寄存器的内容:MOVAX,1200H;(AX)= MOVAX,BX;(AX)= MOVAX,1200H;(AX)= MOVAX,BX;(AX)= MOVAX,1100HBX;(AX)= MOVAX,BXSI;(AX)= MOVAX,1100HBX+SI;(AX)= 答:1200H,0100H,4C2AH,3412H,4C2AH,7856H,65B7H3.6 设(BX)=101H,(DS)=2100H ,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?JMPBX;(CS)= ,(IP)= JMPBX;(CS)= ,(IP)= JMPWORD PTRBX+1;(CS)= ,(IP)= JMPDWORD PTRBX;(CS)= ,(IP)= 答:1900H,0101H;1900H,0FFC7H;1900H,0FFH;0F000H,FFC7H3.7 试根据以下要求写出相应的汇编语言指令。把BX寄存器和DX寄存器内容相加,结果存入DX寄存器中,汇编语言指令: ;用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。汇编语言指令: ;用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器内容相加,并把结果送回到存储器中。汇编语言指令: ;用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。汇编语言指令: ;把数0B5H与AL寄存器内容相加,并把结果送回AL寄存器中。汇编语言指令: ;答:(1)ADD DX,BX (2)ADD AL,BYTE PTR BXSI (3)ADD BX+0B2H,CX(4)ADD 0524H,2A59H (5)ADD AL,0B5H3.8 指令SAR可用来 除2,而指令SHR可用来 除2。答:带符号数,无符号数3.9 条件转移指令的目标地址应在本条指令的下一条指令的 个字节范围内。答:2 3.10 执行指令XORAX,AX的含义是 。答:将AX清零3.11 一个有16个字的数据区,它的起始地址为70A0H:DDF6H,那么该数据区的最后一个字单元的物理地址为 H。答:7E814H3.12 串处理指令规定源寄存器使用 ,源串在 段中;目的寄存器使用 ,目的串必须在 段中。答:SI,数据段,DI,附加段3.13 执行加法指令时,如果两个操作数的符号相同,而结果的符号与之相反,则OF ;执行减法指令时,如果两个操作数的符号相反,而结果的符号与减数相同,则OF= 。答:1,13.14 数据串传送指令执行前应做 、 、 、 四项准备工作。答:置源串首地址、置目的串首地址、置串长、置方向标志二、选择题(可多选)3.15 基址寄存器的内容、变址寄存器的内容以及指令中指定的位移量三者之和作为操作数的有效地址,它的寻址方式是 。A、直接寻址方式B、寄存器相对寻址方式C、基址变址寻址方式D、相对基址变址寻址方式3.16 完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是 。A、MOV AL,00HB、AND AL,00HC、XOR AL,ALD、SUB AL,AL3.17 指令TEST AL,02H的含义是 。A、测试AL是否等于02HB、测试AL第二位的状态C、测试AL第一位的状态D、将AL的第一位和02单元的各位进行测试3.18 8086CPU在执行8位有符号数运算后,产生溢出是结果超出了 。A、0255B、+128-128C、+255-256D、+127-1283.19 不能改变8086程序计数指针IP的指令是 。A、RETB、PUSH AXC、CALLD、JBE3.20 不影响8086堆栈指针SP值的指令是 。A、JMPB、PUSH AXC、POP CXD、INT 21H3.21 8086中执行指令RET 04H表示 。A、返回到04H单元B、作段间返回C、返回到当前地址后第4个单元D、完成RET指令后SP加43.22 下列不正确的指令是(DATA已定义) 。A、MOV 4DI,02HB、MOV BYTE PTR4DI,02HC、MOV 4DI,ALD、MOV DATADI,02H3.23 假设V1和V2是用DW定义的变量,下列指令中正确的是 。A、MOV V1,20HB、MOV V1,V2C、MOV AL,V1D、MOV 2000H,V23.24 下列哪条指令不合法? A、INT AX,0278HB、ROR DX,CLC、CMPSBD、RET 43.25 下列指令中,有语法错误的是 。A、MOV SI,DIB、IN AL,DXC、JMP WPRD PTRBXD、PUSH WORD PTR 20BX+SI-23.26 下列4条指令中, 是错误的。A、MOV DS,2000HB、ADD DX,BPC、MOV AX,200 D、MOV AX,ARRAYSI+23.27 运算型指令的寻址和转移型指令的寻址,其不同点在于 。A、前者取操作数,后者决定程序的转移地址B、后者取操作数,前者决定转移地址C、两者都是取操作数D、两者都是决定程序的转移地址3.28 下列指令中操作数在代码段中的是 。A、MOV AL,25HB、ADD BH,ALC、INC DS:25HD、CMP AL,BL3.29 设(BL)=5,要使结果(BL)=0AH,应执行指令是 。A、AND BL,0FHB、NOT BLC、XOR BL,0FHD、OR BL,0FH3.30 指令JMP DWORD PTRBXSI属于 寻址。A、寄存器间接寻址B、相对基址变址寻址C、段内转移直接寻址D、段间转移间接寻址3.31 在下列指令中, 指令的执行会影响条件码的CF位。A、JMP NEXTB、JC NEXTC、INC BXD、SHL AX,13.32 将累加器AX的内容清零的正确指令是 。A、OR AX,0B、XOR AX,AXC、TEST AX,AXD、CMP AX,AX答:3.15 D3.16 A3.17 C3.18 D3.19 B3.20 A3.21 D3.22 A3.23 A3.24 C3.25 A3.26 A 立即数不允许直接送入段寄存器3.27 A3.28 A3.29 C3.30 D3.31 D3.32 B三、简答题3.33 PUSH和POP指令有什么特点?答:这两条指令都不影响标志位,而且由于堆栈操作必需以字为单位,所以它们只能做字操作,不能使用立即寻址方式。3.34 算术移位指令和逻辑移位指令有什么不同?答:移位指令常用于乘2除2操作。其中,算术移位用于带符号数;逻辑移位用于无符号数。3.35 串处理指令有什么特殊规定?简述REPZ CMPSB指令的执行过程。答:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。REPZ CMPSB指令对两个字节型字符串比较,找到第一个不相等的字节结束。3.36 完成下列操作,选用什么指令?将AX的内容减去0520H和上次运算的借位;将变量名TABL的段地址送AX;答:(1)sbb ax,0520H(2)mov ax,seg tabl3.37 条件转移指令和无条件转移指令有什么不同?答:条件转移指令只能实现偏移量为-128至+127字节范围的转移;无条件转移指令根据寻址方式可实现短转移(偏移量为-128至+127字节),段内转移,段间转移。第4章 8086/8088汇编语言(格式)习题解答一、填空题 答:4.1有关操作数的伪指令中,算术运算符有+、-、*、/和MOD,逻辑运算符有AND、OR、XOR和NOT,关系操作符有EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于),数值运算符有TYPE、LENGTH、SIZE、OFFSET、SEG,属性操作符PTR、THIS、段属性前缀、SHORT、HIGH 和LOW。4.2下列两个语句的区别在于X1不可以重复定义,X2可以重复定义。X1EQU1000HX2=1000H4.3 假设(DS)=3000HORG 3100HTABLEDB10,3*4,10HADDRESSDDTABLEARRAYDW2 DUP(675AH,?)写出下列各单元的内容。(3100H)= 0AH(3101H)= 0CH(3102H)= 10H(3103H)= 00H(3104H)= 01H(3105H)= 00H(3106H)= 31H (3107H)= 5AH(3108H)= 67H(3109H)= 00H(310AH)= 00H(310BH)= 5AH(310CH)= 67H(310DH)= 00H(310EH)= 00H4.4 对于下面的数据定义,各条MOV指令单独执行后,请写出相关寄存器的内容。FLDB DB ?TABLEA DW 20 DUP(?)TABLEB DB ABCD(1)MOV AX, TYPE FLDB;(AX)= 1 (2)MOV AX, TYPE TABLEA;(AX)= 2 (3)MOV CX, LENGTH TABLEA;(CX)= 20 (4)MOV DX, SIZE TABLEA;(DX)= 40 (5)MOV CX, LENGTH TABLEB;(CX)= 1 4.5 设X1、X2是两个已经赋值的变量,指令ANDAX,X1 AND X2中,两个AND的区别是第一个AND是逻辑与指令、第二个AND是逻辑与运算符。4.6 对于指令MOVBX,(X LT 10H) AND 40H)OR (X GE 10H) AND 50H),当X10H时,汇编结果为MOVBX,40H,否则汇编结果为MOVBX,50H。4.7 数据定义语句BUF1DW?BUF2EQUBYTE PTR BUF1当汇编后,PTR类型操作符使BUF2具有与BUF1相同的段地址和偏移地址,但类型为字节。4.8 ENDP是过程定义结束伪指令,与PROC配套使用。ENDS是段定义结束伪指令,与SEGMENT配套使用,END是一个源模块汇编结束伪指令。4.9 已知指令ARRAY DB 2 DUP(1 DUP(?),则该指令分配2个字节单元,指令MOV AX,LENGTH ARRAY执行后,AX=2;指令MOV AX,SIZE ARRAY执行后,AX=2。4.10 汇编程序产生二进制的目标文件OBJ,但OBJ还必须使用link连接转换成可直接执行的EXE文件。4.11 在指令和伪指令中可直接使用“$”表示地址计数器的当前值,ORG伪指令后给定的数值应是一个常量。4.12 DB伪指令以字节为单位分配存储;DD伪指令以双字为单位分配存储。故如下数据定义:XDB4 DUP(2),2COUNTEQU10YDD COUNT DUP(?)为变量X分配9个字节存储;为变量Y分配40个字节存储。4.13 数据段中有以下定义:ARRAY1EQU20H (ARRAY1 代表的是一个数)ARRAY2DW20H (ARRAY2 代表的是一个数的地址)指出下面两条指令的源操作数寻址方式:MOVAX,ARRAY1;寻址方式立即数寻址方式MOVAX,ARRAY2;寻址方式直接寻址方式4.14 根据下面的指令序列,CX寄存器中的值应该是18。X1DWABX2DB16 DUP(?)CNTEQU$-X1 ($代表的是地址计数器的当前值)MOVCX,CNT4.15 假设ES段中有一个字符串12FG3LM5C,其名为ARRAY,下面的程序段CLDLEADI,ES:ARRAYMOVAL, GMOVCX,9REPNE SCASB执行后CX的值是5二、选择题4.16表示源程序结束伪操作的格式为 。A、ENDSLABELB、ENDLABELC、ENDSD、END答:B4.17一般地,我们将计算机指令的集合称为 。A、机器指令B、伪指令C、宏指令D、语句答:A4.18在汇编语言程序设计中,伪指令OFFSET表达的含义是回送变量或标号的 。A、段地址值B、偏移地址值C、物理地址值D、操作数答:B4.19若定义DAT DW A,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。A、00H41HB、41H00HC、XXH41HD、41HXXH(选项C、D中的XX表示任意数据)答:B4.20若定义DAT DW AB,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。A、42H41HB、41H42HC、62H61HD、61H62H答:A4.21 表示一条指令的存储单元的符号地址称为 。A、标号B、变量C、偏移量D、类型答:A4.22 现用数据定义语句定义数据:BUF DB 4 DUP (0,2 DUP(1,0),定义后存储单元中有数据0100H的字单元个数是 。A、4B、3C、8D、12答:a4.23 下列语句中有语法错误的语句是 。A、DB 45HB、DW 0ABCDHC、DW ABCDD、DD AB答:C三、判断题4.24 MOV BYTE PTRBX,1000; 答:X4.25 JMPFAR PTR LAB;LAB是标号; 答:4.25 JLEFAR PTR LAB;LAB是标号; 答:4.27 JMP DWORD PTRBX+SI; 答:4.28 PUSH OFFSET VAL;VAL是DB定义的变量; 答:4.29 汇编语言程序中,符号地址和标号必须先定义后使用; 答:4.30 在生成的可执行文件中,伪指令是不存在的; 答:4.31 语句X=X-Y执行后按照减法规则影响标志位; 答:4.32 ADD AX,BX与ADC AX,BX得到的结果总是不同; 答:4.33 JNZAAA; 答: 第5章 基本程序设计习题解答5.1 简述编制一个汇编语言程序的步骤。答:一般说来,编制一个汇编语言程序需要完成以下步骤:(1) 分析题意,建立数学模型,确定数据结构及算法。(2) 根据算法画出程序流程图。(3) 根据算法及数据结构分配内存单元和寄存器。(4) 编写汇编语言源程序。(5) 使用汇编程序调试工具上机调试程序。5.2 简述判断程汇编语言程序序质量的标准。答:一个良好的程序应符合以下标准:(1)程序可读性强。(2)程序执行的时间短(效率高)。(3)程序所占用的内存少。(4)程序的语句行数少。5.3 编写程序,将DATA_NUM起的4个压缩BCD码转换成二进制数,并存放在DATA_NUM下面相邻字节中。答: MOV BX, DATA_NUM MOV CX,4 BCD: PUSH CXMOV AL,BX PUSH AL AND AL,0F0H MOV CL,4 SHR AL,CL MUX AL,10 MOV DL,AL POP AL ADD AL,DL PUSH BX ADD BX,4 MOV BX,AL POP BX INC BX POP CX LOOP BCD 5.4 试编写一程序,用查表法将一位十六进制数转换成与之对应的ASCII码。答:程序的数据段如下: DATA SEGMENT TAB DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H DB 38H, 39H, 41H, 42H, 43H, 44H, 45H, 46H HEX DB 6 ASC DB ? DATA ENDS CODE SEGMENT START: MOV BX, 0 MOV AL,HEX MOV AH,0 ADD AX,BX XCHG AX,BXMOV AL,TABBXMOV ASC,ALMOV AH,4CHINT 21HCODE ENDS END START5.5 试编程求解表达式S=(23000(X*Y+Z)/Z,其中X=600,Y=25,Z=2000。 答:DATA SEGMENT X DW 600 Y DW 25 Z DW -2000 S DW ?DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX MOV AX,X MOV BX,Y IMUL BX MOV DX, ZADD AX,DX MOV BX,AXMOV AX,23000SUB AX,BXMOV DX,Z IDIV DX MOV S,ALCODE ENDS END START 第6章 输入/输出程序设计习题解答6.1 用指令实现:(1)将一个字节输出到端口43H。 (2)将一个字节从48H端口输入。 (3)将一个在BUF单元的字节输出到端口2F0H。 (4)将一个字节从端口30H输入,存到内存ABC单元。 (5)将一个字从020FH单元输出。 答:(1) OUT 43H,AL(2) IN AX,48H(3) MOV DX,2F0H MOV AL,BYTE PTRBUF OUT DX,AL(4) IN AL,30H MOV BX,ABC MOV BX,AL(5) MOV DX,020FHOUT DX,AX6.2 中断处理程序的典型结构包括哪几部分?答:中断处理程序的典型结构包括以下几个部分:(1)现场保护(2)中断返回(3)中断嵌套(4)发中断结束命令6.3 增加一个新的软中断,应完成哪些操作?答:通常增加一个新的软中断,应完成下面一些操作。选择一个可用的中断类型号n。编写新的软中断处理程序。将新的软中断处理程序的入口地址写入到中断矢量表的4n起的4个字节中。6.4 CPU与外设问的数据传送方式有哪几种?它们各有什么特点?答:主机与外设之间的数据传送(控制)方式有:程序查询传送方式、程序中断传送方式和直接存储器存取(DMA)方式。程序查询传送方式:要求外部设备处于随时能提供数据或接收数据的状态,这种方法不必另设专用的输入/输出指令,只要使用指令系统中所有的存储器操作指令,该方法外设要占用一部分存储器的地址空间,并给存储器地址分配带来不便。程序中断传送方式: 中断输入/输出方式,实现了CPU与外设并行操作,因此极大地提高了CPU的使用效率。直接存储器存取(DMA)方式: DMA方式能摆脱CPU的直接干预,利用硬件控制设备DMA控制器(DMAC),实现外部设备与内存间的直接数据传送。6.5 类型号1DH的中断向量在存储器的哪些单元里?答:类型号1DH的中断向量在存储器的7CH、7DH、7EH、7FH。6.6 内存单元INT9开始放有一个中断服务程序,它所对应的中断类型号为9。试编写建立这一中断向量的程序段。 答:MOV AX, 0 MOV ES, AX MOV DI, 9*4 MOV AX,OFFSET INT9 CLD STOSW MOV AX,CS STOSW STI INT9: PUSH AX STI POP AX IRET6.7 根据本章讲述的内容,试分析下面一段程序实现的功能。MOV AX, 0 MOV ES, AX MOV DI,36H*4MOV AX,OFFSET INTBUFSTOSW MOV AX,CS STOSW答:该段程序设置INTBUF中断服程序的中段向量,INTBUF的中断类型号为36H。 第7章 8086/8088循环程序设计习题解答一、 填空7.1 下列程序完成的是将16位二进制数转换成4位16进制数的ASCII码,请完善程序。 DATA SEGMENT XDW1234HCHARDB4 DUP(0)DATA ENDS LEADI,CHARMOVCH,4MOVBX,XL1: MOVCL,4ROR BX,CLMOVAL,BLANDAL,0FH CMPAL,9 JBE L2 ADDAL,7L2: ADDAL,30H MOVDI,AL INCDI DECCH JNZ L1HLT7.2 以ARRAY为起始地址的字节表中存放着M个带符号数,找出其中的最大值和最小值,并分别送入到AH和AL中,请完善下列程序段。MOV SI,OFFSET ARRAYMOV CX,MCLDMOV BH,SIMOV BL,BHL1:LODSBCMP AL,BHJLE L2MOV BH,ALJMP L3L2: CMP AL,BLJGE L3MOVBL,ALL3:LOOP L1MOV AX,BXHLT7.3 阅读下列程序段,并完善程序和回答问题。XORAX,AXMOV BX,1MOV CX,5LOP:ADDAX,BXINC BXINCBXLOOPLOPHLT程序执行到HLT时,(AX)= E,(BX)=C。A、9B、10C、11D、20E、25F、367.4 以STR1为起始地址的字节存储单元中存放着一个字符串,请统计该字符串中的每个字符含有“1”的个数,并将结果保存到以STR2为起始地址的个字节存储单元中。请完善程序。 STR1 DB FABCDFGHYTRJHKL9M EQU $-STR1STR2 DB M DUP(0)LEA SI,STR1LEA DI,STR2MOV CX,ML1: MOV AL,SIMOV DL,0L2:CMP AL,0JZ L4 SHR AL,1JNC L3INC DL L3: JMP L2L4: MOV DI,DLINC SIINC DILOOP L1HLT二、 编程题7.5 试编制一程序,要求

温馨提示

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

评论

0/150

提交评论