微机原理习题三参考答案
- 格式:doc
- 大小:39.00 KB
- 文档页数:3
>第3章3.1:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2 解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 解:存储模式特点TINY COM类型程序,只有一个小于64KB的逻辑段(MASM 6.x支持)SMALL小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64KB COMPACT代码少、数据多的程序,只有一个代码段,但有多个数据段MEDIUM代码多、数据少的程序,可有多个代码段,只有一个数据段LARGE大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)HUGE更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)FLAT32位应用程序,运行在32位80x86CPU和Windows 9x或NT环境3.4解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5解:段定位、段组合和段类型。
3.6给出采用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序……解:stack segment stackdb 1024(0)stack endsdata segmentstring db 'Hello,Assembly!',0dH,0aH,‘$’data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov dx,offset stringmov ah,9int 21hcode endsend start3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1). EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB通常生成EXE结构的可执行程序(2). COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名 EQU <字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。
3.1已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H ,(1E4F6H)=091DH。
在以上给出的环境下,试问下列指令段之行后的结果如何?(1)MOV CL,[BX+20H][SI];物理地址=DS*10H+BX+SI+20H=091D0H+0024H+0012H+0020H=09226H(09226H)=00F6H,(09226H)=F6H, (09227H)=00H执行后:CL=F6H(2)MOV [BP][DI], CX物理地址=SS*10H+BP+DI=1E4A0H +0024H+0032H=1E4F6HCX=5678H 执行后:(1E4F6H) = 5678H(3)LEA BX, [BX+20H][SI];BX=BX+20H+SI=0056HMOV AX, [BX+2];物理地址=DS*10H+BX+2=091D0H +0058H=09228H (09228H)=1E40H 执行后:AX=1E40H(4)LDS SI, [BX][DI];物理地址=DS*10H+BX+DI=091D0H +0056H=09226H (09226H)=00F6H (09228H)=1E40H执行后:BX=(09226H)=00F6HDS=(09228H)=1E40HMOV [SI],BX物理地址=DS*10H+SI =1E400H +0012H=1E412HBX=0024H, 执行后:(1E412H)=0024H (5)XCHG CX,[BX+32H]物理地址=DS*10H+BX+32H =091D0H +0056H =09226H (09226H)=00F6H , CX=5678H执行后:(09226H)=5678H , CX=00F6HXCHG [BX+20H][SI], AX物理地址=DS*10H+BX+20H+SI =091D0H +0056H =09226H (09226H)=5678H , AX=1234H执行后:(09226H)=1234H , CX=5678H3.2设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H。
微机原理作业参考答案第一次:P16 3,4,5,71.3冯。
诺依曼计算机的结构特点是什么?答:参考P51.4典型微机有哪三大总线?它们传送的是什么信息?答:有数据总线(DB ,双向,传送数据),地址总线(AB ,单向,传送CPU要访问的内存单元地址或D 端口的端口号),控制总线CB,双向,传送总线控制信息)。
1.5什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?三者有什么区别和联系?答:微型计算机系统可分为三个层次,BP:微处理器,微型计算机和微型计算机系统。
微处理器即CPU,是一片主要包含运算器、控制器、寄存器组和总线访问逻辑电路的芯片;微型计算机是以微处理器为核心,配上存储器(ROM、RAM )、IX)接口电路及系统总线等所组成的计算机;以微型计算机为屮心,配以相应的外围设备以及控制微型计算机工作的软件,就构成了完整的微型计算机系统。
1.7试用示意图说明内存单元的地址和内存单元的内容,二者有何联系和区别?答:内存单元、内存单元的地址、内存单元的内容一这三个名词可类比为:房子、房子的地址、房子里住的人。
也就是说,内存单元是物理器件,8086CPU有二十根地址线,最多可访问1M (2^20)个内存单元。
内存单元按顺序被分配一个地址一第一个单元:0,第二个单元:1…最后一个单元:FFFFFH (或1048575D)。
每个内存单元可存储一个字节的数据。
图略,参考P7o第二彳欠作业:P54 1,2,3,6,7,9,11,132.18086从功能上分为哪两个部件?每个工作部件的功能、组成和特点分别是什么?答:分为执行部件OEU)和总线功能部件6U)两部分。
EU功能:执行算术/逻辑命令。
BE功能:访问内存或⑷ 端口,从屮读冯数据和读指令。
EU组成:ALU、EU控制器、寄存器组(通用、指针变址、标志)组成:指令队列、总线控制逻辑、物理地址生成逻辑(地址加法器、段寄存器、F )EU、BU的特点和更详细的功能说明:参考P19o2.28086 +有几个通用寄存器,有几个变址寄存器,有几个地址指针寄存器?它们中通常哪几个寄存器可作为地址寄存器使用?答:通用寄存器:AX , BX , CX , DX ;变址寄存器:SI、DI;地址指针寄存器:BP、SP。
《微型计算机原理》习题3(P117)参考答案(部分题号与教材有错位,请注意)3.1 为什么要研究8086/8088微处理器及其系统?这比直接研究32位微处理器及其系统有何优缺点?解:尽管8086/8088后续的80286、80386、80486以及Pentium系列CPU结构和功能已发生很大变化,但从基本概念与结构以及指令格式上来讲,他们仍然是经典的8086/8088CPU的延续与提升。
3.2 8086 CPU有多少根数据线和地址线?它能寻址多少内存地址单元和I/O端口?8088CPU又有多少根数据线和地址线?为什么要设计8088CPU?解:8086 CPU有16根数据线和20根地址线,可寻址1MB存储单元和64KB的I/O端口。
8088 CPU 有16位内部数据线和8条外部数据总线,20根地址线。
8088 CPU 是8086 CPU的向下兼容版,这样设计主要为了与INTEL原有的8位外围接口芯片直接兼容。
3.3 8086 CPU内部按功能可分为哪两大部分?他们各自的主要功能是什么?解:从功能上讲,8086可分为两个部分,即总线接口单元(bus interface unit,BIU)和执行单元(execution unit ,EU)。
总线接口单元(BIU)的功能是负责CPU与存储器或I/O设备之间的数据传送。
EU的功能只是负责执行指令;执行的指令从BIU的指令队列缓冲器中取得,执行指令的结果或执行指令所需要的数据,都由EU向BIU发出请求,再由BIU经总线控制电路对存储器或外设存取。
3.4 8086 CPU内部的总线接口单元BIU由哪些功能部件组成?他们的基本操作原理是什么?解:BIU内有4个16位的段地址寄存器CS、DS、SS和ES,16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。
基本操作原理是BIU要从内存取指令送到指令队列缓冲器;CPU执行指令时,总线接口单元要配合执行单元从指定的内存单元或者外设端口中取数据,将数据传送给执行单元,或者把执行单元的操作结果传送到指定的内存单元或外设端口中。
习题3答案1. 指出下列指令的错误原因。
(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。
(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。
(1) 判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
第3章8086CPU指令系统1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’,’word’,’WOR’D;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。
解:var1DW4512H,4512,-1,100/3,10H,65530var2DB’BYTE’,’word’,’WORD’buf1DB100DUP(?)buf2DB7DUP(5DUP(55H),10DUP(240))var3DBLENGTHbuf1pointerDWvar1,buf1(或者pointerDWOFFSETvar1,OFFSETbuf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:var1DB12,-12,20/6,4DUP(0,55H)var2DB‘Assemble’var3DW‘AB’,‘cd’,‘E’var4DWvar2var5DDvar2解:3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1,VAR2为字变量,L1为标号):(1)MOVSI,100(2)MOVBX,VAR1[SI](3)MOVAX,[BX](4)MOVAL,[DX](5)MOVBP,AL(6)MOVVAR1,VAR2(7)MOVCS,AX(8)MOVDS,0100H(9)MOV[BX][SI],1(10)MOVAX,VAR1+VAR2(11)ADDAX,LENGTHVAR1(12)ORBL,TYPEVAR2(13)SUB[DI],78H(14)MOVSVAR1,VAR2(15)PUSH100H(16)POPCS(17)XCHGAX,ES(18)MOVDS,CS(19)JMPL1+5(20)DIVAX,10(21)SHLBL,2(22)MOVAL,15+23(23)MULCX(24)XCHGCL,[SI](25)ADCCS:[0100],AH(26)SBBVAR1-5,154解:(1)MOVSI,100正确。
微机原理与接口技术习题参考答案3-13章..习题3.1 什么是总线?总线是如何分类的?答:总线,是一组能为多个功能部件服务的公共信息传送线路,是计算机各部件之间的传送数据、地址和控制信息的公共通路,它能分时地发送与接收各部件的信息。
按照总线系统的层次结构,可以把总线分为片内总线、系统总线、局部总线和外设总线。
3.2 举例说明有哪些常见的系统总线与外设总线。
答:常见的系统总线有:ISA总线、PCI总线、PCI Express总线。
常见的外设总线有:RS-232串行总线、IEEE1394串行总线、USB串行总线。
3.3 ISA总线的主要特点是什么?答:ISA总线的主要特点是:(1)总线支持力强,支持64KB的I/O地址空间、24位存储器地址空间、8/16位数据存取、15级硬件中断、7个DMA通道等。
(2)16位ISA总线是一种多主控(Multi Master)总线,可通过系统总线扩充槽中的MAST ER的信号线实现。
除CPU外,DMA控制器、刷新控制器和带处理器的智能接口卡都可以成为ISA总线的主控设备。
(3)支持8种类型的总线周期,分别为8/16位的存储器读周期、8/16位的存储器写周期、8/16位的I/O读周期、8/16位的I/O写周期、中断请求和中断响应周期、DMA周期、存储器刷新周期和总线仲裁周期。
3.4 PCI总线的主要特点是什么?答:PCI总线的特点概述如下:(1) 线性突发传输:PCI支持突发的数据传输模式,满足了新型处理器高速缓冲存储器(Cache)与内存之间的读写速度要求。
线性突发传输能够更有效地运用总线的带宽去传输数据,以减少不必要的寻址操作。
(2) 多总线主控:PCI总线不同于ISA总线,其地址总线和数据总线是分时复用的。
这样减少了接插件的管脚数,便于实现突发数据的传输。
数据传输时,一个PCI设备作为主控设备,而另一个PCI设备作为从设备。
总线上所有时序的产生与控制,都是由主控设备发起的。
1 思考与练习题一、选择题1.计算机硬件中最核心的部件是( )。
CA.运算器B.主存储器C.CPUD.输入/输出设备2.微机的性能主要取决于( )。
A(B——计算机数据处理能力的一个重要指标)A.CPUB.主存储器C.硬盘D.显示器3.计算机中带符号数的表示通常采用( )。
CA.原码B.反码C.补码D.BCD码4.采用补码表示的8位二进制数真值范围是( )。
CA.-127~+127B.-1 27~+128C.-128~+127D.-128~+1285.大写字母“B”的ASCII码是( )。
BA.41HB.42HC.61HD.62H6.某数在计算机中用压缩BCD码表示为10010011,其真值为( )。
CA.10010011BB.93HC.93D.147二、填空题1.微处理器是指_CPU_;微型计算机以_CPU_为核心,配置_内存和I/O接口_构成;其特点是_(1)功能强 (2)可靠性高 (3)价格低 (4)适应性强 (5)体积小 (6)维护方便_。
P8 P52.主存容量是指_RAM和ROM总和_;它是衡量微型计算机_计算机数据处理_能力的一个重要指标;构成主存的器件通常采用_DRAM和PROM半导体器件_。
P5 P93.系统总线是_CPU与其他部件之间传送数据、地址和控制信息_的公共通道;根据传送内容的不同可分成_数据、地址、控制_3种总线。
P94.计算机中的数据可分为_数值型和非数值型_两类,前者的作用是_表示数值大小,进行算术运算等处理操作_;后者的作用是_表示字符编码,在计算机中描述某种特定的信息_。
P125.机器数是指_数及其符号在机器中加以表示的数值化_;机器数的表示应考虑_机器数的范围、机器数的符号、机器数中小数点位置_3个因素。
P15 P166.ASCII码可以表示_128_种字符,其中起控制作用的称为_功能码_;供书写程序和描述命令使用的称为_信息码_。
P18 P19三、判断题1.计算机中带符号数采用补码表示的目的是为了简化机器数的运算。
3.1给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。
3.2试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
(5) 把数0B5H与(AL)相加,并把结果送回AL中。
答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCK ADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCKMOV DX, [BX+(6–1)*2]BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
第三章参考答案1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令:⑴将一个立即数送入寄存器BX;⑵将一个立即数送入段寄存器DS;⑶将变址寄存器DI的内容送入一个存储单元中;⑷从存储单元中取一个数送到段寄存器ES中;⑸将立即数0ABH与AL相加,结果送回AL中;⑹把BX与CX寄存器内容相加,结果送入BX;⑺用寄存器间接寻址方式,实现一个立即数与存储单元内容相加,结果放回存储器。
解:(1)MOV BX, 1234H(2)MOV AX, 1234HMOV DS, AX(3)MOV [BX], DI(4)MOV ES,[BX](5)ADD AL,0ABH(6)ADD BX,CX(7)MOV AX,[BX]ADD AX,1234HMOV [BX],AX2.执行下面程序,完成指令后的填空:MOV AX,2000H ;AH= 20HMOV DS,AX ;AL= 00H DS= 2000HMOV SS,AX ;SS= 2000H AX= 2000HMOV BX,2030H ;BH= 20H BL= 30HMOV SI,BX ;SI= 2030HMOV DI,3040H ;DI= 3040HMOV SI,DI ;SI= 3040HMOV SP,50FFH ;SP= 50FFHMOV DX,SP ;DH= 50H DL= FFHMOV CL,25 ;CL= 19HMOV BL,CL ;CL= 19H BL= 19HMOV AH,0F0H ;AH= F0HMOV CH,AH ;CH= F0HMOV BYTE PTR[DI],64 ;(DI)= 40HMOV WORD PTR[SI],256 ;(SI)= 00H (SI+1)= 01HMOV DL,[SI+1] ;DL= 01HMOV DH,1+[SI] ;DH= 00HMOV AL,1[SI] ;AL= 01HMOV WORD PTR[BX][SI],34 ;(BX+SI)= 22H (BX+SI+1)= 00HMOV [BX+SI+4],BL ;(BX+SI+4)= 19HMOV BP,2[BX+DI] ;BP= 00HMOV [BP],AL ;(BP)= 01HMOV AX,[BP][DI] ;AX= 0100HMOV BL,AL ;BL= 00HMOV ES,BX ;ES= 2000HPUSH BX ;SP= 50FDH (SP,SP+1)= 2000HPUSH DI ;SP= 50FBH (SP,SP+1)= F019HPOP CX ;SP= 50FDH CX= 3040HPOP DX ;SP= 50FFH DX= 2000HXCHG AX,BP ;AX= 0000H BP= 0100HXCHG DH,BL ;DH= 00H BL= 20HLAHF ;FLAG= 0002H AH= 02HSAHF ;FLAG= 0002H AH= 02HPUSHF ;SP= 50FDH (SP,SP+1)= 0002HPOPF ;SP= 50FFH FLAG= 0002H3.设DS=2000H,ES=2100H,SS=1500H,SI=00A0H。
习题三参考答案
3.1 寻址方式(源操作数)
(1)MOV AX, [2A38H] ;直接寻址,
操作数有效地址:2 A38H,物理地址:32000H+2A38H=34A38H
(2)MOV AX, [BX] ;寄存器间接寻址,
操作数有效地址:0123H,物理地址:32000H+0123H=32123H
(3)MOV AX, [BX+38H] ;寄存器相对寻址,
操作数有效地址:015BH,物理地址:32000H+015BH=3215BH
(4)MOV AX, [BX+DI] ;基址变址寻址,
操作数有效地址:1123H,物理地址:32000H+1123H=33123H
(5)MOV AX, [BX+DI+38H] ;基址变址相对寻址,
操作数有效地址:115BH,物理地址:32000H+115BH=3315BH
(6)MOV AX, 2A38H ;立即数寻址。
(7)MOV AX, BX ;寄存器寻址。
3.2 标志寄存器状态标志:AX=96BCH, BX=AC4DH, CF=0,执行“ADD AX, BX”指令,则1001 0110 1011 1100
+ 1010 1100 0100 1101
(1) 0100 0011 0000 1001
则SF=0, ZF=0, OF=1, CF=1, PF=1, AF=1。
3.4 AX与DX内容交换(考查对指令的理解与灵活使用)
(1)XCHG AX, DX
(2)PUSH AX
PUSH DX
POP AX
POP DX
(3)PUSH AX
MOV AX, DX
POP DX
(另,讲指令时留的思考题)写出三条既可使AX寄存器清0,又能使CF为0的指令(1)XOR AX, AX
(2)AND AX, 0
(3)SUB AX, AX
3.7 建立状态标志,并利用条件转移指令建立简单分支结构
解:(1) TEST AL, 80H(10000000)
JZ L1
MOV AH, -1(0FFH)
JMP EXIT
L1: MOV AH, 0
EXIT: …
(2) TEST AL, 80H(10000000)
JNZ L1
MOV AH, 0
JMP EXIT
L1: MOV AH, -1(0FFH)
EXIT: …
(3) CMP AL, 0
JS L1
MOV AH, 0
JMP EXIT
L1: MOV AH, -1(0FFH)
EXIT: …
3.10 考查对移位指令的理解与使用
答:把DX和AX中的三十二位数据联合逻辑左移四位放在DX与AX中。
分析过程,设DX:aaaabbbbccccdddd,AX:zzzzyyyyxxxxtttt
DX逻辑左移四位:bbbbccccdddd0000,
AH转存BL, 则BL:zzzzyyyy,
AX逻辑左移四位:yyyyxxxxtttt0000,
BL逻辑右移四位:0000zzzz,
则OR DL, BL后, DL:ddddzzzz。
即最终DX:bbbbccccddddzzzz,AX:yyyyxxxxtttt0000。
3.12 考查指令格式规定细节
(1)MOV DL, CX
错误。
数据类型不匹配。
(2)MOV DS, 1000H
错误。
立即数不能向段寄存器传送。
(3)MOV [DI], [BX]
错误。
两操作数不允许都是内存操作数。
(4)MOV DL, [BX][BP]
错误。
基址变址寻址不允许使用两个基址寄存器内容构成有效地址。
(5)XCHG AX, [5000H]
正确。
数据段偏移地址5000H、5001H字单元内容与AX寄存器内容互换。
(6)PUSH 3541H
错误。
不允许立即数压入堆栈。
(7)INC [BX]
错误。
操作数类型不明确,可改为INC BYTE PTR [BX] 或INC WORD PTR [BX]。
(8)POP CS
错误。
代码段寄存器不允许为目的操作数(CS不允许赋值)。
(9)MOV A[BX+SI], 0
错误。
操作数类型不明确,可改为MOV WORD PTR A[BX+SI], 0 。
(10)MOV AL, 300
错误。
数据类型不匹配(源操作数超出目的操作数范围)。
3.13 阅读程序段,给出中间结果。
综合考查对指令、寻址方式、寄存器、堆栈、内存的理解。
(图3.19略,可自行参照)
解:MOV DX, [BX+4] ;DX= (1A87H )
PUSH DS ;SP= (FFFEH ), [SP]=(2050H) !!!!
TEST AX, DX ;AX= (8E9DH ),SF= (0 ) (测试指令,操作数不变,只影响状态位) ADC AL, [DI] ;AL=(9DH+3EH+CF)=(0DBH)!!!!CF=0 OR CF=1? 应该CF=0 !!
XCHG AX, DX ;AX= (1A87H ),DX= (8EDBH )
XOR AH, BL ;AH=(1AH⊕04H)=(1EH)
SAR AH, 1 ;AH=(0FH),CF= (0 ) !!!!算术右移
3.14 考查对动态调试工具DEBUG的理解使用与掌握。
解:MOV AX, 1000H ;立即数寻址,AX= (1000H )
MOV BX, AX ;寄存器寻址,BX= (1000H )
MOV AX, [BX] ;寄存器间接寻址,AX= (3412H )
MOV AX, 10[BX] ;寄存器相对寻址,AX= (AAABH )。