微机原理与接口技术课后习题参考答案_第1页
微机原理与接口技术课后习题参考答案_第2页
微机原理与接口技术课后习题参考答案_第3页
微机原理与接口技术课后习题参考答案_第4页
微机原理与接口技术课后习题参考答案_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 (1.6 习 题)1简述名词的概念:微处理器、微型计算机、微型计算机系统。答:(1)微处理器:微处理器(Microprocessor)简称P或MP,或CPU。CPU是采用大规模和超大规模集成电路技术将算术逻辑部件ALU(Arithmetic Logic Unit)、控制部件CU(Control Unit)和寄存器组R(Registers)等三个基本部分以及内部总线集成在一块半导体芯片上构成的电子器件。(2)微型计算机:微型计算机(Microcomputer)是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。(3)微型计算机系

2、统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件(Hardware)系统与软件(Software)系统。其中,硬件(Hardware)系统由CPU、内存储器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组成。软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算机所编制的程序及程序运行所需要的数据文档资料的总和。一般把软件划分为系统软件和应用软件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。2简述名词的概念:指令寄

3、存器、地址寄存器、标志寄存器。答:(1)指令寄存器:指令寄存器(Instruction Register,IR)用来保存计算机当前正在执行或即将执行的指令。当一条指令被执行时,首先,CPU从内存取出指令的操作码,并存入IR中,以便指令译码器进行译码分析。(2)地址寄存器:地址寄存器(Address Register,AR)被动地接受IP传送给它的地址值(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址引脚上,以便CPU访问指定的内存单元。(3)标志寄存器:标志寄存器(Flags,F)是CPU中不可缺少的程序状态寄存器,因此,也称程序状态字寄存器(PSW),所谓

4、状态是指算术或逻辑运算后,结果的状态以二进制的0或1在标志寄存器中标识出来,例如,运算结果有进位,则进位标志位CF=1,否则为0。3何谓IA-32处理器?答:Intel公司推出了32位结构的80386微处理器后,确定了80386芯片的指令集结构(Instruction Set Architecture)为以后开发80X86系列处理器的标准,称其为Intel 32位结构(Intel Architecture-32,IA-32),后来的80486、Pentium等微处理器统称为IA-32处理器,或称32位80X86处理器。4什么叫总线?总线包括哪三种?答: 所谓总线,它将多个功能部件连接起来,并提

5、供传送信息的公共通道,能为多个功能部件分时共享,CPU通过总线连接存储器和I/O接口等,构成了微型计算机。这里指的总线(BUS)包括地址总线、数据总线和控制总线三种。5地址总线的作用是什么?答:地址总线(Address Bus,AB),通常是CPU用来发出地址信息的,用于对存储器和I/O接口进行寻址。6什么叫溢出?判断溢出的方法是什么?答:(1)溢出通常指计算机运算的结果超出了计算机所能允许的范围。本章所讲的溢出是指用补码实现加/减运算后,若参与操作的两数在定义域内,但运算结果超出了字长范围内补码所能允许表示的值,所计算出的结果产生了错误,称之为溢出。(2)加/减运算判断溢出的方法:如果把加/

6、减法运算都变成补码相加,则两个正数相加可能产生正的溢出,两个负数相加可能会产生负的溢出,正负两数相加不会产生溢出。具体实现的方法是:两个操作数运算后,用最高位和次高位产生的进位位异或,异或结果为1,则表示有溢出,结果为0,表示无溢出。例如:两个8位数运算后,溢出标志OF=C6C77假设四种CPU主存地址分别为16根、20根、24根以及32根,试问每种CPU可寻址内存多少字节?解:每种CPU可寻址内存分别是:216=64KB、220=1MB、224=16MB、232=4GB。8在一般指令格式中,由哪两部分组成?答:由操作码和操作数组成。9设字长为16位,将下列十进制数转换成二进制数、十六进制数以

7、及BCD数。 65 129 257 513解: 65=01000000B=41H=(0110 0101)BCD 129=10000001B=81H=(0001 0010 1001)BCD 257=100000001B=101H=(0010 0101 0111)BCD 513=1000000001B=201H=(0101 0001 0011)BCD10设字长为8位,写出x、y的原码、反码和补码,并且用补码计算x+y,问是否有溢出? x=-78 y=35 x=-64 y=-66解: x=-78 y=35X原=11001110, X反=10110001, X补=10110010Y原=00100011

8、, Y反=00100011, Y补=00100011X补+Y补=10110010+00100011=11010101, 无溢出。 x=-64 y=-66X原=11000000, X反=10111111, X补=11000000Y原=11000010, Y反=10111101, Y补=10111110X补+Y补=11000000+10111110=01111110, 有溢出。11试用8位二进制写出以下数、字母以及控制命令的ASC码,还要写出它们各自的奇校验、偶校验、标记校验及空格校验的ASC码。 B 8 CR NUL解:各自对应的奇校验、偶校验、标记校验及空格校验的ASC码如表1所示。表1 数、

9、字母以及控制命令的ASC码数、字母以及控制命令奇校验偶校验标记校验空格校验B11000010010000101100001001000010800111000101110001011100000111000CR000011011000011011000110100001101NUL10000000000000000100000000000000012设两个BCD数X=1000 1001,Y=0111 0101,试用列竖式的方法计算X+Y,注意要做加6修正运算。解: 1000 1001 0111 0101 1111 1110 结果不正确 110 个位加6修正 1 0000 0100 结果还不正确

10、 + 110 十位加6修正 1 0110 0100 结果正确13若规格化32位浮点数N的二进制存储格式为41360000H,求其对应的十进制数值。解: 41360000H=0 10000010 01101100000000000000000B N=(-1)S(1.M)2E-127=(-1)0(1.011011)2130-127 =1.01101123=1011.011=11.375D14微机中的存储器是如何编址的?答:在微机中,存储器均按字节(一字节由8位二进制信息组成)编址,即每个字节有一个二进制的地址编码。给每个存储单元分配的一个固定地址,称为单元地址。15微型计算机的硬件系统由那些部件组

11、成?答:微型计算机的硬件系统主要由运算器、控制器、存储器、输入设备及输出设备五大部分组成。16计算机的主要性能指标有哪些?答:字长、CPU的主频、主存储器的容量及外存储器的容量等。第2章 (2.5 习 题)1微型计算机可以工作在哪三种工作模式下?答:微处理器可以工作在:实地址模式、保护模式及虚拟8086模式共三种。2如何从实模式转变到保护模式?答:通过对CPU中的控制寄存器CR0中的b0位置1,即保护允许位PE置1,于是系统进入保护模式。这是由操作系统程序来实现的。3实模式有哪些特征?答:实地址模式(Real-Address Mode)也称实模式,简单地说,是指80286以上的微处理器所采用的

12、8086的工作模式。在实模式下,采用类似8086 CPU的体系结构,其寻址机制,尤其是存储器寻址,以及中断处理机制均和8086相同。在实模式下,关键是CPU寻址空间只有1MB(00000HFFFFFH),也是采用分段管理存储器的方式,将存储器分成四种类型的段,每段存储空间最大为64KB。将1MB的存储空间保留两个区域:一个是中断向量表区(00000003FFH),这是1KB的存储空间,用于存放256个中断服务程序的入口地址(中断向量),每个中断向量占4字节。416位微处理器有哪些通用寄存器?答:AX、BX、CX、DX、SI、DI、SP和BP。516位微处理器有哪4个段寄存器?每个段寄存器的作用

13、是什么?答:4个段寄存器分别是代码段寄存器CS、数据段寄存器DS、附加段寄存器ES及堆栈段寄存器SS。(1)代码段寄存器CS是一个随机存取存储区,用来保存微处理器使用的程序代码。在8086系统中,代码段寄存器CS定义了代码段的起始地址。代码段的最大存储空间为64KB。(2)数据段寄存器DS也是一个随机存取存储区,用来保存程序执行过程中所使用的数据及存放程序运行后的结果。数据段寄存器DS定义了数据段的起始地址,其最大存储空间也是64KB。(3)附加段寄存器ES是为某些串操作指令存放操作数而附加的一个数据段。与数据段类似,附加段寄存器ES定义了附加段的起始地址,其最大存储空间也为64KB。(4)堆

14、栈段寄存器SS是一个特殊的随机存取存储区,用来临时保存程序执行过程中有关寄存器的内容、程序的地址信息及传递参数等。堆栈段寄存器SS与堆栈指针SP共同确定堆栈段内的存取地址。其最大存储空间为64KB。6如何理解32位微处理器的通用寄存器与16位的通用寄存器兼容?答:虽然32位微处理器将8086原来的8个16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP均扩展成(Extended)32位的寄存器,即EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。但是,它保留了原来的8个16位寄存器和8个8位的寄存器,仍然可以使用它们编程,当然,所编写的程序仍然可以在32位机上运行。既可

15、以用32位寄存器编程,还可以用16位及8位寄存器编程,这就实现了寄存器的兼容。7什么叫段基地址?什么叫偏移地址?答:编程人员在编程时,只能涉及到逻辑地址,而不能涉及到实际地址。逻辑地址在实模式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”,实模式下,段基地址与段内偏移地址都是16位,段基地址是段起始地址的高16位,说明每个段在主存中的起始位置,段内偏移地址也称“偏移量”,是所要访问存储单元距离起始地址之间的字节距离。在32位段的情况下,偏移量是32位。8段寄存器与32位偏移地址寄存器的固定搭配如何?答:固定搭配如表2所示。表2 段寄存器与32位偏移地址寄存器的固定搭配段寄

16、存器偏移地址寄存器物理地址的用途CSEIP指令地址DSEAX、EBX、ECX、EDX、ESI、EDI、8位、16位或32位二进制数数据段内地址SSESP、EBP 堆栈段内地址ES只有串操作时默认EDI附加数据段内地址(目地址)FS无固定搭配寄存器一般数据地址GS无固定搭配寄存器一般数据地址98086 CPU由哪两部分组成?它们的主要功能各是什么?答:8086 CPU内部结构从功能上看,它由两大部件组成,分为总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。(1)总线接口部件BIU的主要功能:它是8086 CPU与外部存储器和I/O端口的接

17、口,提供了16位双向数据总线和20位地址总线,负责CPU与存储器及I/O端口之间的数据传送操作(包括物理地址的形成)。(2)执行部件EU主要功能:从BIU中的指令队列获取指令,对指令进行译码分析并执行,执行指令所需要的操作数和运算结果的存储,是由EU向BIU传递偏移地址,BIU只要收到EU送来的偏移地址,于是将送来的偏移地址与相应的段地址组成20位的物理地址,根据现行的20位物理地址,通过执行存储器的读/写总线周期来完成读/写操作,或者是通过执行I/O端口的读/写总线周期来完成读/写I/O端口的操作。 108086 CPU中的标志寄存器FLAGS有哪些状态标志位?在什么情况下置位?答:状态标志

18、有6位:CF、PF、AF、ZF、SF和OF。 CF(Carry Flag),进位标志位。本次运算中最高位有进位或借位时,CF=1。 PF(Parity Flag),奇偶校验标志位。本次运算结果的低8位中1的个数为偶数时,PF=1。 AF(Auxiliary Carry Flag),辅助进位标志位。本次运算结果低4位向高4位有进位或借位时,AF=1。 ZF(Zero Flag),零标志位。若运算结果为0时,ZF=1。 SF(Sign Flag),符号标志位。当运算结果的最高位为1,则SF=1。 OF(Overflow Flag),溢出标志位。当运算结果有溢出时,OF=1。11什么是逻辑地址?什么

19、是物理地址?如何将逻辑地址转换为物理地址?答:从8088/8086开始,CPU内部就有了对存储器的分段机制,每个存储单元可以看成两种地址:逻辑地址与物理地址。(1)逻辑地址逻辑地址是编程时所使用的地址,在实模式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”。(2)物理地址物理地址又称为实际地址,它是信息在内存中存放的实际地址,是CPU访问存储器时实际发出的地址信息。(3)在实地址方式下,由CPU中的总线接口单元将段基地址左移4位后与16位的偏移地址相加,生成20位的物理地址。可以访问1MB的存储空间。12设X=35H,Y=76H,进行X+Y和X-Y运算后,标志寄存器FLA

20、GS的状态标志位各是什么?答:(1)X+Y=35+76后,CF=0、AF=0、SF=0、OF=0、ZF=0、PF=1。(2)X-Y=35-76后,CF=1、AF=1、SF=1、OF=0、ZF=0、PF=1。13什么叫存储器地址交叉?微机的存储器为什么要用存储器地址交叉技术?答:(1)在一个物理存储芯片内部所有存储单元的地址编号都不是连续的,而在相邻存储芯片之间的物理地址是相连接的,例如,16位的微处理器8086/80286把内存地址分为偶地址的字节数据、奇地址的字节数据,因此,分为偶字库和奇字库,即在一个物理存储芯片内所有存储单元的地址编号都是奇地址,另一物理存储芯片内所有存储单元的地址编号都

21、是偶地址,这就称为地址交叉。(2)偶地址存储体与数据总线的低8位(D7D0)相连,奇地址存储体与数据总线高8位(D15D8)相连,可以由偶地址有效选中偶字库(例A0=0),由奇地址有效选中奇字库(例(=0)。原因是:便于CPU可以只访问偶地址一个字节,也可以只访问奇地址一个字节,还可以访问一个字(2字节)。在CPU的外部数据总线为32位的情况下,CPU不仅可能只访问一个字节、一个字,还可能访问一个双字,因此,把内存分成4个存储体,实现存储器地址的4体交叉。14请将实模式下逻辑地址转变成物理地址。(1)FFFFH:0000H (2)0045H:0018H (3)2000H:4600H (4)B8

22、21H:3456H解:(1)FFFFH:0000H,物理地址= FFFFH16+0000H=FFFF0H(2)0045H:0018H,物理地址= 0045H16+0018H=00468H(3)2000H:4600H,物理地址= 2000H16+4600H=24600H(4)B821H:3456H,物理地址= B821H16+3456H=BB666H15在8086系统中,CPU执行访问存储器指令时,=0,说明当前CPU要访问哪一个存储体?答:当=0时,CPU要访问奇地址的存储体。第3章 (3.12 习 题)3.1 按照16位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作数的寻址方式。

23、解:(1) mov ax,0;源操作数:立即寻址,目的操作数:寄存器寻址(2) mov si,ax;源操作数:寄存器寻址,目的操作数:变址寻址(3) mov 2di,bx;源操作数:寄存器寻址,目的操作数:相对变址寻址(4) mov 2bx+si,dx;源操作数:寄存器寻址,目的操作数:相对基址(加)变址寻址(5) mov ax,1000h;源操作数:直接寻址,目的操作数:寄存器寻址(6) mov dx,bxsi;源操作数:基址(加)变址寻址,目的操作数:寄存器寻址(7) mov ax,bx;源操作数:基址寻址,目的操作数:寄存器寻址(8) mov dx,bp+8;源操作数:相对基址寻址,目的

24、操作数:寄存器寻址3.2 按照32位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作数的寻址方式。解:(1) mov eax,01h;源操作数:立即寻址,目的操作数:寄存器寻址(2) mov esi,ax;源操作数:寄存器寻址,目的操作数:基址寻址(3) mov esi*2,bx;源操作数:寄存器寻址,目的操作数: 比例变址寻址(4) mov ebx+esi,dx;源操作数:寄存器寻址,目的操作数: 基址加比例变址寻址(5) mov eax,1000h;源操作数:直接寻址,目的操作数:寄存器寻址(6) mov dx,ebx+esi*8;源操作数: 基址加比例变址寻址,目的操作数:寄存

25、器寻址(7) mov edx,eax;源操作数:寄存器寻址,目的操作数:寄存器寻址(8) mov dx,ebp*2+8;源操作数: 比例变址加位移寻址,目的操作数:寄存器寻址(9) mov dx,ebx+8;源操作数: 基址加位移寻址,目的操作数:寄存器寻址(10) mov ax,ebx+esi*2+78h;源操作数: 基址加比例变址加位移寻址,目的操作数:寄存器寻址3.3 指出下列指令的错误原因解:(1) inc si;目的操作数类型不明确(2) mov eax,bx;源操作数和目的操作数类型不匹配(3) mov 2,ax;立即数不能作目的操作数(4) mov ebx,edi;源操作数和目的

26、操作数不能同时为存储器操作数(5) mov ax,bx+bp;基址变址寻址方式不能同时为基址寄存器(6) mov ax,si+di;基址变址寻址方式不能同时为变址寄存器(7) mov ah,300;300超出了ah可以容纳的数据范围(8) mov cs,1000h;cs不能由程序员赋值,它由系统自动赋值(9) push al;push要求操作数为16位或32位(10) shl ax,8;当移位次数超过1时,先将移位次数送cl,再移位(11) mov ax,bx+di;基址变址寻址方式缺少一对方扩号(12) mov ip,bx;ip不能由程序员赋值,它由系统自动赋值(13) mov es,ds;

27、源操作数和目的操作数不能同时为段寄存器(14) mov sp,ax;入栈只能用push指令实现3.4 比较下列两条指令,指出他们的区别。解:mov eax,si;从内存读数据送eaxmov si,eax;把eax的值写入到内存3.5 假设(EAX)=12345678H,写出下面每条指令单独执行后,(EAX)=?解:(1) and eax,0000ffffh;(eax)=00005678h(2) test eax,1;(eax)=12345678h(3) xor eax,eax;(eax)=0(4) sub eax,eax;(eax)=0(5) add eax,1;(eax)=12345679h

28、(6) or eax,1;(eax)=12345679h(7) cmp eax,0000ffffh;(eax)=12345678h(8) inc eax;(eax)=12345679h(9) dec eax;(eax)=12345677h(10) sub eax,8;(eax)=12345670h3.6 假定(AX)=1234H,(BX)=00FFH,回答每条指令单独执行后,(AX)=?(BX)=?解:(1) and ax,bx;(ax)=0034h(bx)=00ffh(2) test ax,bx;(ax)=1234h(bx)=00ffh(3) xor ax,bx;(ax)=12cbh(bx)

29、=00ffh(4) xchg ax,bx;(ax)=00ffh(bx)=1234h(5) add ax,bx;(ax)=1333h(bx)=00ffh(6) sub bx,ax;(ax)=1234h(bx)=0eecbh(7) or bx,ax;(ax)=1234h(bx)=12ffh(8) cmp ax,bx;(ax)=1234h(bx)= 00ffh3.7 假设(EAX)=11223344H,(EBX)=11225566H,写出下面程序段每条指令执行后(EAX)=?(EBX)=?解:add eax,ebx;(eax)=224488aaH,(ebx)=11225566H add eax,00

30、000088h;(eax)=22448932H,(ebx)=11225566Hsub eax,ebx;(eax)=112233ccH,(ebx)=11225566Hinc ebx;(eax)=112233ccH,(ebx)=11225567Hand ebx,0000ffffh;(eax)=112233ccH,(ebx)=00005567H3.8 已知(DS)=1000H,(BX)=0100H,(SI)=0004H,存储单元10100H10107H依次存放11H 22H 33H 44H 55H 66H 77H 88H,10004H10007H 依次存放2AH 2BH 2CH 2DH,说明下列每条

31、指令单独执行后AX中的内容。解:(1)MOV AX,0100H ;(AX)=2211H(2)MOV AX,BX ;(AX)=2211H(3)MOV AX,0004H ;(AX)=2B2AH(4)MOV AX,0102H ;(AX)=4433H(5)MOV AX,SI ;(AX)=2B2AH(6)MOV AX,SI+2 ;(AX)=2D2CH(7)MOV AX,BX+SI;(AX)=6655H(8)MOV AX,BX+SI+2;(AX)=8877H3.9 已知(DS)=1000H,(EBX)=0100H,(ESI)=0004H,存储单元10100H10107H依次存放11H 22H 33H 44

32、H 88H 77H 66H 55H,10004H10007H 依次存放8AH 8BH 8CH 8DH,说明下列每条指令执行后EAX中的内容。解:(1)MOV EAX,0100H ;(EAX)=44332211H(2)MOV EAX,EBX;(EAX)=44332211H(3)MOV EAX,EBX+4 ;(EAX)=55667788H(4)MOV EAX,0004H ;(EAX)=8D8C8B8AH(5)MOV EAX,ESI ;(EAX)=8D8C8B8AH(6)MOV EAX,EBX+ESI ;(EAX)=55667788H3.10 什么是堆栈?它的工作原理是什么?它的基本操作有哪两个?答

33、:堆栈是在内存RAM中开辟的一段空间,利用“先进后出”或“后进先出”的原则存取数据。如果把数据压入堆栈,则堆栈指针的值是减少的,即所谓的向下生成堆栈。由SS:SP(16位)或SS:ESP(32位)指向栈底(栈空)或栈顶(栈不空)地址。它的基本操作有数据入栈指令PUSH和数据出栈指令POP。3.11 设SS=1000H,SP=0100H,指出下列每条指令执行后,(AX)=?(BX)=?(SP)=?并且回答堆栈中的内容如何?解:MOV AX,2233H ;(AX)=2233H,(BX)不确定,(SP)=0100HPUSH AX;(AX)=2233H,(BX)不确定,(SP)=00FEHMOV BX

34、,4455H;(AX)=2233H,(BX)=4455H,(SP)=00FEHPUSH BX;(AX)=2233H,(BX)=4455H,(SP)=00FCHPOP AX;(AX)=4455H,(BX)=4455H,(SP)=00FEHPOP BX;(AX)=4455H,(BX)=2233H,(SP)=0100H这段指令执行后将AX和BX的值互换。3.12 什么是16位段?它有何特点?答:32位微机在上电或复位后,微处理器首先工作在实地址模式,它与8086/80186的工作方式具有相同的基本结构,也只能寻址1MB物理存储空间,分段最大只能是64KB,但是,在实地址模式下,32位X86 CPU可

35、以使用16位寄存器和16位寻址方式,这与8086 CPU兼容,32位X86 CPU还可以使用32位寄存器和32位寻址方式,处理32位数据及执行32位的新增指令,但是,段基地址和偏移量都只用16位,6个段寄存器仍然当作16位的段寄存器使用,对于偏移地址来说,如果是32位,则高16位应该为0,只有低16位偏移地址有效,相当于可以进行32位数处理的快速8086,所以称之为“16位段”。3.13 什么是32位段?它与16位段的主要区别如何?答:32位X86 CPU由实地址模式可以进入保护工作模式,它是一个增强了80286保护模式功能的32位保护工作模式。在保护工作模式下,32位微处理器不仅具有段式存储

36、器管理功能,而且还有页式存储器管理功能,支持虚拟存储器,段基地址和段内偏移量都是32位,称之为“32位段”,使用全部32条地址线,可以寻址的物理存储器达到4GB,只有在保护模式下,32位X86 CPU才能发挥全部功能。而32位段的程序只能在32位Windows环境中执行。3.14 16位存储器寻址中,分为哪几种寻址方式?答:(1)直接寻址(2)基址寻址(包括相对基址寻址)(3)变址寻址(包括相对变址寻址)4)基址(加)变址寻址(5)相对基址(加)变址寻址3.15 32位存储器寻址中,分为哪几种寻址方式?答:(1)直接寻址(2)基址寻址(3)基址加位移寻址(4)比例变址寻址(5)比例变址加位移寻

37、址(6)基址加比例变址寻址(7)基址加比例变址加位移寻址3.16 对于立即寻址的指令,有8位、16位及32位的立即寻址的指令,各列举2条指令(一条是传送指令,另一条是加法指令)。解:8位立即寻址指令(1) MOV AH,2(2) ADD AL,316位立即寻址指令(1) MOV AX,1234H(2) ADD DX,3456H32位立即寻址指令(1) MOV EAX,12345678H(2) ADD EDX,12345678H3.17 用移位指令将ESI中内容移入EDI中,如何实现?解:.model small.386.code.startup mov esi,11223344h mov ed

38、i,12345678h shrd edi,esi,16 rol esi,16 shrd edi,esi,16.exitEnd3.18 将EBX中存放的值清零,实现的方法有哪一些?解:(1) SUB EBX,EBX(2) AND EBX,0(3) XOR EBX,EBX第4章 (4.5 习 题) 1该数据段在内存中的分配图如下。变量内容EA01234Buf152637num34h812h9point105h1000h11point208h1200h13data1415str31h1632h1733h180ffh1902h200ffh2102h222将下列程序段所定义字符串中的小写字母均改为大写字

39、母,并放回原处,原大字母不变,最后,用DOS的9号功能显示这串大写字符,请完善下列程序。 .model small .data x db Hello EVEryBODY !,$ .code .startup解:程序如下:.model small.386.data x db Hello EVEryBODY !,$.code .startup lea bx,x .repeatmov al,bx.if al = a & al = z sub al,20h mov bx,al.endifinc bx .until al = = $ lea dx,x mov ah,9 int 21h .exitend3

40、设变量名VAL1、VAL2及SUM的数据类型属性都是双字属性,VAL1和VAL2中分别存放了一个32位的加数和被加数,SUM用于存放和数。(1)选用简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。(2)选用完整段格式编程,实现上述相同的功能。提示:只能使用16数相加。解:程序一,简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。.model small.386.data val1 dd 12345678h val2 dd 87654329h sum dd ?.code .startup mov eax,val1 add eax,val2 mov

41、 sum,eax .exitend程序二,完整段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。data segment val1 dd 12345678h val2 dd 87654329h sum dd ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,word ptr val1 add ax,word ptr val2 mov word ptr sum,ax mov ax,word ptr val1+2 add ax,word ptr val2+2mov w

42、ord ptr sum+2,axmov ah,4chint 21hcode endsend start4将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来,要求用完整段和简化段两种格式分别编程实现。解:程序一,简化段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来。.model small.386.data x db Hello World !,$ n equ $-x y db 100 dup(?).code .startup mov ax,ds mov es,ax mov cx,n lea si,x lea di,y r

43、ep movsb mov ah,9 lea dx,y int 21h .exitend注意:在简化段模式编程时,数据段和附加数据段是同一段,在使用字符串指令时,用指令mov ax,ds、mov es,ax将DS和ES保持一致。程序二,完整段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来。data segment x db Hello World !,$ n equ $-xdata endsedata segment y db 100 dup(?)edata endscode segment assume cs:code,ds:data,es:eda

44、tastart: mov ax,data mov ds,ax mov ax,edata mov es,ax lea si,x lea di,y mov cx,n rep movsb mov ah,9 lea dx,y int 21h mov ah,4ch int 21hcode endsend start5设有一个数组存放了40名学生的成绩(0100分),设数组位于变量名为SCORS的存储单元,编程统计059分、6069分、7079分、8089分及90100分的人数,并分别存放到SCOREE、SCORED、SCOREC、SCOREB、SCOREA存储单元中。解:程序一,简化段格式编程.model small.386.datascore db 90,23,56,67,98,78,10,45,87,100 db 65,78,89,100,

温馨提示

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

评论

0/150

提交评论