微机原理及汇编语言课后习题解答_第1页
微机原理及汇编语言课后习题解答_第2页
微机原理及汇编语言课后习题解答_第3页
微机原理及汇编语言课后习题解答_第4页
微机原理及汇编语言课后习题解答_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理与汇编语言课后习题解答第1章 计算机基础知识1微处理器、微型计算机和微型计算机系统三者之间有什么不同?2为什么把微型计算机的基本结构说成是总线结构?3试说明字节和字长的概念。4CPU在内部结构上由哪几部分组成?CPU应具备哪些主要功能?5为什么把微型计算机的基本结构说成是总线结构?6微型计算机采用总线结构有什么优点?7_是以CPU为核心,加上存储器、I/O接口和系统总线组成的。 A微处理器 B微型计算机 C微型计算机系统8堆栈指针的作用是用来指示_。 A栈底地址 B栈顶地址 C下一条要执行指令的地址9在微程序控制器中,机器指令与微指令的关系是_。 A每条机器指令对应一条微指令 B一段由

2、机器指令编成的程序由一条微指令来执行 C每条机器指令由一段微指令编成的微程序来解释执行10计算机内的“溢出”是指其运算的结果_。 A为无穷大 B超出了计算机内存储单元所能存储的数值范围 C超出了该指令所指定的结果单元所能存储的数值范围11程序计数器(PC)的位数取决于_。 A存储器的容量 B指令字长 C机器字长128位补码操作数“10010011”等值扩展为16位后,其机器数为_。 A1111111110010011 B0000000010010011 C10000000101001113计算机的字长越长,一个字所能表示的数据精度就越高;在完成同样精度的运算 时,则处理速度_。 A越高 B越低

3、 C不一定14具有指令流水线结构的CPU,一般情况下指令的执行时间主要取决于_。 A指令执行的步骤 BCPU有无等待状态 CCPU的时钟周期 DCPU内的Cache存储器大小15将下列十进制数分别转化为二进制数、十六进制数和压缩BCD码。(1)15.32 (2)325.16 (3)68.31 (4)214.126 解:(1)15.32 = 1111.0101B = F.5H=00010101.00110010BCD (2)325.16 = 10000101.0001B = 85.1H= 001100100101.00010110BCD (3)68.31 = 1000100.0100B = 64

4、.4H= 01101000.00110001BCD (4)214.126 = 11010110.0010B = D6.2H= 001000010100.000100100110BCD16将下列二进制数分别转化为十进制数和十六进制数。(1)10110101 (2)11001011 (3)10101.1001 (4)101101.0101 解:(1)10010101=149=225Q=95H (2) 11001010 = 202 = 312Q = CAH (3) 10111.1101 = 23.8125 = 27.64Q = 17.DH (4) 111001.0101 = 57.625 = 71.

5、24Q = 39.5H17将下列十六进制数分别转化为二进制数、十进制数。(1)FAH (2)12B8H (3)5A8.62H(4)2DF.2H18若X107,Y74按8位二进制可写出:。X补_, Y补=_ X+Y补=_,XY补=_。19X34AH,Y8CH。问:有三位和两位十六进制数X和Y, (1)若X,Y是纯数(无符号数),则:X十Y_H;XY_H。 (2)若X,Y是有符号数,则:X+Y_H;XY=_H。20已知X85,Y76(均为十进制数),求85补,76补。并利用补码的加、减法运算规则计算XY补,X+Y补,XY补。结果的各机器数及其真值请用十六进制表示,并由运算过程中的标志位OF判断结果

6、是否溢出。21 (1)设X补10101010B,则1/2X补的值是什么? (2)设X补11010100B,则-1/4X补的值是什么?第2章 微型计算机结构1 8086是多少位的微处理器?为什么? 答:8086是16位的微处理器,因为8086在其芯片内部采用16位数据传输,每周期能传送或接收16位数据。2 EU与BIU各自的功能是什么?如何协同工作? 答:EU即指令执行部件,其主要功能是执行命令;BIU即总线接口部件,其主要功能是负责完成CPU与储存器或I/O设备之间的数据传送。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服

7、务时,BIU可进行填充指令队列的操作。3 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么? 答:8086CPU内共有14个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针寄存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。4 8086对存储器的管理为什么采用分段的办法? 答:8086是一个16

8、位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间。5 在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。 答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。6 给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。 答:

9、物理地址=(DS)*10H+20C0H=0C00EH*10H+20C0H=0C21A0H7 8086/8088为什么采用地址/数据引线复用技术? 答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。8 8086与8088的主要区别是什么?9 怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何不同?108086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?118086基本总线周

10、期是如何组成的?各状态中完成什么基本操作? 答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。12结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号的功能。 答:ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号

11、;在T2输出;READY信号为存储器或I/O接口"准备好"信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。138086中断分哪两类?8086可处理多少种中断?答:中断分为硬件中断和软件中断。8086为每个中断源分配了一个中断类型码,其取值范围为0-255,即可处理256种中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。不可屏蔽中断:由NMI引脚引入,它不受中断允许标志位的影响;可屏蔽中断:由INTR引脚引入,它受中断允许标志位的影响。148086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?15中断向量表的功能是什么?已知中断类型码分别是84

12、H和0FAH,它们的中断向量应放在中断向量表的什么位置? 答:中断向量是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是8088系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。84H是它的I/O地址代表它的中断类型是21即为dos系统功能调用FAH应为0FAH,即DOS系统功能调用中的打开文件(FCB)功能调用参数DS:DX=FCB

13、首地址 返回参数AL=00文件找到AL=FF文件未找到16简述在最小工作模式下,8086如何响应一个总线请求?17 在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接的?BHE#信号起什么作用?18“80386是一个32位微处理器”,这句话的涵义主要指的是什么?1980X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?有什么不足?2080386内部结构由哪几部分组成?简述各部分的作用。2180386有几种存储器管理模式?都是什么?22在不同的存储器管理模式下,80386的段寄存器的作用是什么?23试说明虚拟存储器的含义,它与物理存储器有什么区别?8038

14、6虚拟地址空间有多大?第3章 指 令 系 统1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式? 答:8086的指令格式由操作码和操作数字段组成。 操作码:要完成的操作。 操作数:参与操作的对象。 寻址:寻找操作数或操作数地址的过程。 寻址方式:指令中给出的找到操作数或操作数地址采用的方式。8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有

15、直接寻址和间接寻址。2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,1000H (4) MOV AX,VAL (5) MOV AX,BX (6) MOV AX,ES:BX(7) MOV AX,BP (8) MOV AX,SI (9) MOV AX,BX+10 (10) MOV AX,VALBX(11) MOV AX,

16、BXSI (12) MOV AX,VALBXSI 解:(1)MOV AX,21H 立即寻址,源操作数直接放在指令中 (2)MOV AX,BX 寄存器寻址,源操作数放在寄存器BX中 (3)MOV AX,1000H 直接寻址,EA = 1000H,PA =(DS)×10HEA = 2000H×10H1000H = 21000H (4)MOV AX,VAL 直接寻址,EA = VAL = 0050H,PA =(DS)×10HEA = 2000H×10H0050H = 20050H (5)MOV AX,BX 寄存器间接寻址,EA =(BX)= 0100H,PA

17、=(DS)×10HEA = 2000H×10H0100H = 20100H (6)MOV AX,ES:BX 寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10HEA = 2100H×10H0100H = 21100H (7)MOV AX,BP 寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10HEA = 1500H×10H0010H = 15010H (8)MOV AX,SI 寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10HEA = 2000H×10H

18、00A0H = 200A0H (9)MOV AX,BX+10 寄存器相对寻址,EA =(BX)10D = 0100H000AH= 010AH,PA =(DS)×10HEA = 2000H×10H010AH = 2010AH (10)MOV AX,VALBX 寄存器相对寻址,EA =(BX)VAL= 0100H0050H= 0150H,PA =(DS)×10HEA = 2000H×10H0150H = 20150H (11)MOV AX,BXSI 基址变址寻址,EA = (BX)(SI)= 0100H00A0H = 01A0H,PA = (DS)×

19、;10HEA = 2000H×10H01A0H = 201A0H (12)MOV AX,VALBXSI 基址变址相对寻址,EA = (BX)(SI)VAL= 0100H00A0H0050H = 01F0H,PA =(DS)×10HEA = 2000H×10H01F0H = 201F0H3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) =32H,(20101)=51H,(20102) =26H,(20103)= 83H,(21200)=1AH,(21201)=B6H,(21202)=D1H

20、,(21203)=29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。(1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,1200H (4) MOV AX,BX(5) MOV AX,1100HBX (6) MOV AX,BXSI 解:(1)MOV AX,1200H 执行后,(AX)= 1200H (2)MOV AX,BX 执行后,(AX)= (BX)= 0100H (3)MOV AX,1200H 直接寻址,EA = VAL = 1200H,PA =(DS)×10HEA = 2000H×10H1200H = 21200H,执行后,

21、(AX)= B61AH (4)MOV AX,BX EA = (BX)= 0100H,PA =(DS)×10HEA = 2000H×10H0100H = 20100H,执行后,(AX)= 5132H (5)MOV AX,1100HBX EA =(BX)1100H = 0100H1100H = 1200H,PA =(DS)×10HEA = 2000H×10H1200H = 21200H,执行后,(AX)= B61AH (6)MOV AX,BXSI EA =(BX)(SI)= 0100H0002H = 0102H,PA =(DS)×10HEA = 2

22、000H×10H0102H = 20102H,执行后,(AX)= 29D1H4 试说明指令MOV BX,10HBX与指令LEA BX,10HBX的区别。 答:前者是数据传送类指令,表示将数据段中以(BX+10H)为偏移地址的16位数据送寄存器BX.;后者是取偏移地址指令,执行的结果是(BX)= (BX)10H,即操作数的偏移地址为(BX)+10H。5 假设(DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H(31000H)=1250H,(31050H)=2400H,(31052H)=6000H。确定下列转移指令的转移地址。(

23、1)JMP 2500H (2) JMP BX(3)JMP WORD PTRBX (4) JMP DWORD PTRBX+DATA解:(1)JMP 2500H(IP)=2500H(2) JMP BX(IP)=(BX)=1000H (3)JMP WORD PTRBX 物理地址=(DS)*10H+(BX)=3000H*10H+1000H=31000H,所以(IP)=1250H(4) JMP DWORD PTRBX+DATA 物理地址=(DS)*10H+(BX)+(DATA)=3000H*10H+1000H+50H=31050H,所以(IP)=2400H6 设堆栈指针SP的初值为2500H, (AX)

24、=1234H,(BX)=5678H。执行指令PUSH AX后,(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=? 解:堆栈指针SP总是指向栈顶,每执行一次PUSH指令SP-2,执行一次POP指令SP+2.所以,执行PUSH AX指令后,(SP)=24FEH;再执行PUSH BX及POP AX后,(SP)=24FEH,(AX)=(BX)=5678H7 分析下列指令的正误,对于错误的指令要说明原因并加以改正。(1) MOV AH,BX (2) MOV BX,SI(3) MOV AX,SIDI (4) MOV MYDATBXSI,ES:AX(5) MO

25、V BYTE PTRBX,1000 (6) MOV BX,OFFSET MAYDATSI (7) MOV CS,AX (8) MOV DS,BP 解:(1) MOV AH,BX 错误,寄存器类型不匹配,可改为MOV AX,BX (2) MOV BX,SI 错误,两个操作数不能都为存储单元,可改为MOV BX,SI或MOV BX,SI (3) MOV AX,SIDI 错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,BXDI。 (4) MOV MYDATBXSI,ES:AX 错误,AX前不能有段跨越前缀,去掉ES:,改为MOV MYDATBXSI,AX (5) MOV BYTE PTR

26、BX,1000 错误,1000超出字节空间存储范围 (6) MOV BX,OFFSET MAYDATSI 正确 (7) MOV CS,AX 错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX (8) MOV DS,BP 正确 注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。8 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。(1) ADD VAR1,VAR2 (2) MOV AL,VAR2(3) SUB AL,VAR1 (4) JMP LABSI(5) JNZ VAR1 解:(1) ADD VAR1,VAR2 错误,两个操作数不能都为

27、存储单元,可改为 MOV BX,VAR2 ADD VAR1,BX (2) MOV AL,VAR2 错误,数据类型不匹配,可改为MOV AX,VAR2 (3) SUB AL,VAR1 错误,数据类型不匹配,可改为SUB AX,VAR1 (4) JMP LABSI 错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1SI (5) JNZ VAR1 错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB (6) JMP NEAR LAB 错误,缺少运算符PTR,可改为JMP NEAR PTR LAB 注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合

28、法形式。9 已知 (AL)=6CH, (BL)=0A9H,试问执行指令ADD AL,BL后,AF、CF、OF、PF、SF、和ZF的值各为多少? 解:指令ADD AL,BL的功能为AL+BLAL,其运算过程如下: 由以上运算可知, 低4位向高4位有进位,所以AF=1; 最高位产生了进位,所以CF=1; 该运算是一个正数加一个负数,所以不会产生溢出,所以OF=0;只有正数+正数=负数,或者负数+负数=正数时,才可能产生溢出现象; 该运算结果的低8位为0001 0101,含有奇数个1,所以PF=0; 该运算结果的最高位为符号位,为0,所以SF=0; 当前的运算结果不为零,所以ZF=0。10试判断下列

29、程序执行后,(BX)=的内容。MOV CL,5MOV BX,01C9HROL BX,1RCR BX,CL 解:该程序段是首先将BX内容不带进位循环左移1位,再循环右移5位。即相当于将原BX内容不带进位循环右移4位01C9H=0000 0001 1100 1001B程序执行后,为1001 0000 0001 1100B故结果为901CH11写出能够完成下列操作的8086CPU指令。(1) 把4629H传送给AX寄存器;(2) 从AX寄存器中减去3218H;(3) 把BUF的偏移地址送入BX中。12根据以下要求写出相应的汇编语言指令。 (1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;(

30、2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;(5) 把数25H与(AL)相加,结果送回寄存器AL中。13按下列要求写出相应的指令或程序段。(1)使BL寄存器中的高、低四位互换;(2)屏蔽AX寄存器中的b10和b5位;(3)分别测试AX寄存器中b13和b2位是否为1。14执行以下两条指令后,标志寄存器FLAGS的六个状态为各为何值?M

31、OV AX,95C8HADD AX,8379H解:指令的功能为95C8H+8739HAL,其运算过程如下: 由以上运算可知, 低4位向高4位有进位,所以AF=1; 最高位产生了进位,所以CF=1; 该运算是两个负数相加结果为正数,产生溢出,所以OF=1; 该运算结果的低8位为0100 0001,含有偶数个1,所以PF=1; 该运算结果的最高位为符号位,为0,所以SF=0; 当前的运算结果不为零,所以ZF=0。15若(AL)=85H,(BL)=11H,在分别执行指令MUL和IMUL后,其结果是多少?第4章 汇编语言程序设计1. 请分别用DB、DW、DD伪指令写出在DATA开始的连续8个单元中依次

32、存放数据11H、22H、33H、44H、55H、66H、77H、88H的数据定义语句。解:定义如下:DATA DB 11H,22H,33H,44H,55H,66H,77H,88H DW 2211H,4433H,6655H,8877H DD 44332211H,88776655H2 若程序的数据段定义如下,写出各指令语句独立执行后的结果:DSEGSEGMENTDATA1DB10H,20H,30HDATA2DW10DUP(?)STRINGDB123DSEGENDS(1) MOVAL,DATA1(2) MOVBX,OFFSETDATA2(3) LEASI,STRINGADDBX,SI解:(1)取变量

33、DATA1的值. 指令执行后,(AL)=10H. (2)取变量DATA2的偏移地址. 指令执行后,(BX)=0002H. (3)先取变量STRING的偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果送DI.指令执行后,(SI)=0016H;(DI)=(DI)+0018H3 试编写求两个无符号双字长数之和的程序。两数分别在MEM1和MEM2单元中,和放在SUM单元。解:程序编写如下: DATA SEGMENT MEM1 DW 6655H,8877H MEM2 DW 8877H,6655HSUM DW 2 DUP(?) ;55667788H+77885566H=0CCEECCEEHD

34、ATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,MEM1+2 ADD AX,MEM2+2 MOV SUM+2,AX MOV AX,MEM1 ADC AX,MEM2 MOV SUM,AX MOV AH,4CH INT 21HCODE ENDS END START 4 试编写程序,测试AL寄存器的第4位是否为0?解:程序编写如下:CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: TEST AL,08H JZ L1L1:MOV AH,4CH INT 21HC

35、ODE ENDS END START5 编写程序,将BUFFER中的一个8位二进制数转换为ASCII码,并按位数高低顺序存放在ANSWER开始的内存单元中。解:程序编写如下:DATA SEGMENTBUFFER DB 4AHANSWER DB 2 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,BUFFER MOV CL,4 SHR AL,CL CMP AL,10 JC L1 ADD AL,7 L1: ADD AL,30H MOV ANSWER,ALMOV AL,BUFF

36、ER AND AL,0FH CMP AL,10 JC L2 ADD AL,7 L2: ADD AL,30H MOV ANSWER+1,ALMOV AH,4CH INT 21HCODE ENDS END START6 假设数据项定义如下:DATA1DBHELLO! GOOD MORNING!DATA2DB20DUP(?)用串操作指令编写程序段,使其分别完成以下功能:i. 从左到右将DATA1中的字符串传送到DATA2中;ii. 传送完后,比较DATA1和DATA2中的内容是否相同;iii. 把DATA1中的第3和第4个字节装入AX;iv. 将AX的内容存入DATA2+5开始的字节单元中。解:编写

37、程序段如下:(1) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20CLD REP MOVSB (2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20CLD REPE CMPSB JNZ NO ;不同转移到NO ;否则二字符串相同NO: (3) LEA SI,DATA1+2 LODSB MOV AH,AL LODSB (4) LEA DI,DATA2+5 XCHG AH,AL STOSB MOV AL,AH STOSB7 执行下列指令后,AX寄存器中的内容是多少?TABLEDW 10,20,30,40,50ENTRYDW3MOVBX,OFFSETT

38、ABLEADDBX,ENTRYMOVAX,BX解:分析:MOVBX,OFFSETTABLE ;BX=0000H ADDBX,ENTRY ;BX=0003HMOVAX,BX ;AX=1E00H由以上分析可知,执行指令后,AX=1E00H。8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。解:程序编写如下:LEA SI,STRING1 LEA DI,STRING2 MOV CX,60 CLD LOAD:LODSB DEC CX CMP CX,20 JNZ LOAD REP MOVSB 9 假设一个48位数存放在DX:AX:BX中,试编写程序段,将该48位数乘2。解

39、:编写程序段如下: CLCSHL BX,1SHL AX,1SHL DX,110试编写程序,比较AX,BX,CX中带符号数的大小,并将最大的数放在AX中。解:编写程序如下:CMP AX,BX JG LL1 XCHG AX,BXLL1: CMP AX,CX JG LL2 XCHG AX,CXLL2:11若接口03F8H的第1位(b1)和(b3)同时为1,表示接口03F8H有准备好的8位数据,当CPU将数据取走后,b1和b3就不再同时为1了。仅当又有数据准备好时才再同时为1。试编写程序,从上述接口读入200B的数据,并顺序放在DATA开始的地址中。解:编写程序如下:LEA BX,DATA MOV C

40、X,200 LP0: MOV DX,03F8H ;状态端口地址LP1: IN AL,DX AND AL,0AH CMP AL,0AH JNZ LP1 MOV DX,03F9H ;数据端口地址 IN AL,DX MOV BX,AL INC BX LOOP LP0 12画图说明下列语句分配的存储空间及初始化的数据值。(1)DATA1DBBYTE,12,12H,2 DUP(0,?,3)(2)DATA2DW4DUP(0,1,2),?,-5,256H解:(1)存储空间分配情况如图(a)所示;(2) 存储空间分配情况如图(b)所示。 图(a) 图(b)13请用子程序结构编写如下程序:从键盘输入一个二位十进

41、制的月份数(0112),然后显示出响应的英文缩写名。解:编写程序如下:DATA SEGMENT TAB DB “Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec.” MESS DB “请输入二位月份:”,24H CR DB 10,13,24HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX LP: LEA DX,MESS MOV AH,9 INT 21H CALL KEYMONTH ;键盘输入二位月份 CMP AL,Q JZ

42、 QUIT CALL DISMONTH ;显示月份的英文缩写名 JMP LP QUIT: MOV AH,4CH INT 21H MAIN ENDP KEYMONTH PROC MOV BL,0MOV CX,2 CON: MOV AH,1 INT 21H CMP AL,Q JZ EXIT SUB AL,30H JL CON CMP AL,9 JG CON XCHG AL,BL MOV BH,10 MUL BH ADD BL,AL DEC CX JNZ CON MOV AL,BL EXIT: RET KEYMONTH ENDP DISMONTH PROC SUB AL,1 MOV BL,4 MUL

43、 BL LEA BX,TAB ADD BX,AX MOV CX,3 DIS: MOV DL,BX MOV AH,2 INT 21H INC BX LOOP DIS LEA DX,CR MOV AH,9 INT 21H RET DISMONTH ENDP CODE ENDS END START14给出下列等值语句:LPHAEQU100BETAEQU25GRAMMEQU 4试求出下列表达式的值:(1)ALPHA*100+BETA;(2)(ALPHA + 4)*BETA-2(3)(BETA/3)MOD 5;(4)GRAMMOR3解:(1) ALPHA*100+BETA=10025 (2) (ALPH

44、A + 4)*BETA-2=2598(3) (BETA/3)MOD 5=3(4) GRAMM OR3=715图示以下数据段在存储器中的存放形式。DATASEGMENTDATA1 DB10H,34H,07H,09HDATA2 DW2DUP(42H)DATA3 DB HELLODATA4EQU 12DATA5DDOABCDHDATAENDS解:图示如下:16阅读下边的程序段,试说明它实现的功能是什么?DATASEGMENTDATA1DBABCDEFGDATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATAAAAA:MOV AX,DATA MOV DS,AX MOV BX,

45、OFFSETDATA1 MOV CX,7NEXT: MOV AH,2 MOV AL,BX XCHG AL,DL INC BX INT 21H LOOP NEXT MOV AH,4CH INT 21HCODEENDSENDAAAA答:程序功能是显示字符串ABCDEFG17编写一程序段,把BUFFER开始的100个字节的内存区域初始化为55H、0AAH、55H、0AAH、55H、0AAH。解:编写程序如下:DATA SEGMENT BUFFER DB 100 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

46、MOV DS,AX MOV CX,50 LEA BX,BUFFER LOP: MOV AL,55H MOV BX,AL INC BXMOV AL,0AAH MOV BX,AL INC BX LOOP LOP MOV AH,4CH INT 21H CODE ENDS END START18有16个字节,编程序将其中第2、5、9、14、15个字节内容加3,其余字节内容乘2(假定运算不会溢出)。解:编写程序如下:DATA SEGMENT BUFF DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 L EQU 0100100010000110BDATA ENDSCOD

47、E SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,16 MOV DX,L LEA BX,BUFF LP: MOV AL,BX SHL DX,1 JC LP1 ADD BX,AL JMP LP2 LP1: ADD BYTE PTRBX,3 LP2: INC BX LOOP LP MOV AH,4CH INT 21H CODE ENDS END START19编写计算斐波那契数列前20个值的程序。斐波那契数列的定义如下:F(0)=0,F(1)=1,F(N)=F(N-1)+F(N-2),N 2解:编写程序如下:DATA SEGMENT TAB DW 0,1,18 DUP(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

温馨提示

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

评论

0/150

提交评论