第三章微机原理 习题课

第三章习题课一、选择题1、在汇编语言程序的开发过程中使用宏功能的顺序就是()。

A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项就是()。

A、名字项B、操作项C、操作数项D、注释项3、下列叙述正确的就是( )A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( )、A、CMPB、SUBC、ANDD、MOV5、测试BL寄存器内容就是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法就是( )。

A TEST BL,4FHJZ NEXTB XOR BL,4FHJZ NEXTC AND BL,4FHJZ NEXTD OR BL,4FHJZ NEXT6、检查BUF的内容就是否为正偶数,如就是正偶数,则令AL=0。

下面程序段正确的就是( )。

A、MOV AL,BUF JS K1SHR AL,1JNC K1MOV AL,0K1:……B、MOV AL,BUF AND AL,11 JNZ K2MOV AL,0K2:……C、MOV AL,BUFTEST AL,81HJNZ K3MOV AL,0K3:……7、下列描述中,执行循环的次数最多的情况就是()。

A.MOV CX,0B.MOV CX,1LOP:LOOP LOP LOP:LOOP LOPC.MOV CX,0FFFFHD.MOV CX,256LOP:LOOP LOP LOP:LOOP LOP8、在下列指令中, 指令的执行会影响条件码中的CF位。

A.JMP NEXTB.JC NEXTC.INC BXD.SHL AX,19、下列指令执行时出错的就是()。

A.ADD BUF1,BUF2B.JMP DWORD PTR DAT [BX]C.MOV AX,[BX+DI] NUMD.TEST AL,08H10、在下列指令的表示中,不正确的就是()。

A.MOV AL,[BX+SI]B.JMP SHORT DONIC.DEC [BX]D.MUL CL11、在进行二重循环程序设计时,下列描述正确的就是()。

A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B.外循环初值应置外循环之内;内循环初值应置内循环之内C.内、外循环初值都应置外循环之外D.内、外循环初值都应置内循环之外,外循环之内12、下面就是多字节加法程序,第一个数就是8A0BH,第二个数就是D705H。

DA TA SEGMENTFIRST DB (1), (2),0HSECOND DB (3), (4)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DA TAMOV DS,AXMOV CX, (5)MOV SI,0(6)NEXT: MOV AL,SECOND[SI]ADC FIRST[SI],ALINC SILOOP NEXTMOV AL,0ADC AL, (7)MOV FIRST[SI],ALMOV AH,4CHINT 21HCODE ENDSEND START请选择正确的答案填入空格中:(1)A)8AH B)0BHC)D7H D)05H(2)A)8AH B)0BHC)D7H D)05H(3)A)8AH B)0BHC)D7H D)05H(4)A)8AH B)0BHC)D7H D)05H(5)A)3 B)2C)1 D)4(6)A)CLC B)CLDC)STC D)CLI(7)A)1 B)-1C)0 D)0FFH二、填空题1、指令JMP FAR PTR DONE属于()寻址。

2、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令就是()3、下面指令序列测试BH中的数就是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。

TEST BH,01H___K14、循环指令LOOPNZ终止循环的条件就是( )。

5、条件转移指令JNE的测试条件为()。

6、执行如下程序:MOV AX,0MOV BX,1MOV CX,100A:ADD AX,BXINC BXLOOP AHLT执行后 (BX)= ()。

上题的程序执行后(AX)= ()。

7、执行下面的程序段后,AL______。

BUF DW 2152H,3416H,5731H,4684HMOV BX, OFFSET BUFMOV AL, 3XLAT8、就是过程定义结束伪指令,其前面需要加配套使用。

就是段定义结束伪指令,其前面需要加配套使用。

9、设V ALA EQU 200V ALB EQU 30V ALC EQU 1BH下列表达式的值各为多少?(2)(V ALB AND 0FH)OR (V ALB XOR 0FH)(3)(V ALA GE V ALB )AND 0FH三、程序阅读与设计1、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。

TEST AX,8000H___________MOV PLW,BXJMP DONEK1:____________DONE:2、MOV DL,ALNOT DLTEST DL,04HJE NEXT┇NEXT:…若上述程序段执行时产生分支,说明AL中的数第位一定为1?程序段执行后CF就是?3、下面程序段就是判断寄存器AH与AL中第3位就是相同,如相同,AH置0,否则AH置全1。

试把空白处填上适当指令。

___ XOR AH,AL____AND AH,08H____ JE ZERO_____MOV AH,OFFHJMP NEXTZERO:MOV AH,0NEXT:……4、AND AL,ALJZ BRCH1RCR AL,1JZ BRCH2RCL AL,1INC ALJZ BRCH3: 、、、、、、上述程序运行后,试回答:(1)当(AL)=__________时,程序转向BRCH1(2)当(AL)=_________时,程序转向BRCH2(3)当(AL)=_________时,程序转向BRCH35、下列语句在存储器中分别为变量分配多少字节空间? V AR1 DB 10,2V AR2 DW 5 DUP (?), 0V AR3 DB ‘HOW ARE YOU?’,’$’ V AR4 DD -1, 1, 0V AR1分配的字节空间为 字节;V AR2分配的空间为 字节;V AR3分配的空间为 字节,V AR4分配的空间为 字节。

6、以BUF 为首址的字节单元中,存放了COUNT 个无符号数,下面程序段就是找出其中最大数并送入MAX 单元中。

BUF DB 5,6,7,58H,62,45H,127,…… COUNT EQU $-BUF MAX DB ? ┇MOV BX,OFFSET BUF MOV CX,_____ MOV AL,[BX] LOP1:INC BX _________ __ JAE NEXT MOV AL,[BX] NEXT:DEC CX_____ ________________7、请在图中正确填写执行这些伪指令后数据区的内容STRING1 DB ‘ABCD ’ STRING2 DW ‘ABCD ’8、读下面的程序并要求:(1)在每条语句后给出作用释。

(2)画出程序流程图。

(3)回答该程序完成什么功能?DSEG SEGMENTNUM1 DW 500 DUP(?) NUM2 DB 150 DUP(?) DSEG ENDSCSEGSEGMENTASSUME CS:CSEG,DS:DSEGMAIN PROC RAR START: PUSH DS XOR AX,AX PUSH AX MOV CX,64H MOV BX,300 MOV SI,0 MOV DI,0STRING1STRING2NEXT:MOV AL,BYTE PTR NUM1[BX][SI]ADD AL,ALMOV NUM2[DI],ALINC DIINC SILOOP NEXTRETMAIN ENDPCSEG ENDSEND START答:9、程序中下列语句在编译后装入内存时,操作系统为每个变量分配多少字节存储单元? 前15个字节中的内容就是什么?ABC1 DW 0AHXYZ1 DB 4 DUP(?)STR1 DB “error a!”,“$”STR2 DB “OK!”ABC2 DD 1,2,8150H答:10、试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。

VAR1 DB ‘abcdefghij’VAR2 DW 6162H,6364H,6566H,6768H,696AH答:11、下面程序的功能就是什么?MOV CH,4LAB:MOV CL,4ROL BX,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,3AHJL PRINTADD DL,7PRINT:MOV AH,02INT 21HDEC CHJNZ LAB12、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。

ORG 100HBLOK DW X1,X2, (X)COUNT EQU($-BLOLOK)/2RESULT DW COUNT,?……LEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]NEXT:LOOP GOONMOV RESULT+2,AX程序段执行完,回答下述问题RESULT+2字存储单元的内容=______BX=______程序循环次数=______答:13、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!)、试在空白处填上适当的一条指令。

STRING DB‘COMPUTER’,‘$’┇MOV BX,0FFSET STRINGLOP:MOV DL,[BX]MOV AH,02HINT 21H_____ ____________________________JNE LOP14、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

答:15、现有下列数据段:DATA SEGMENTSTR1 DB‘ABCDEFGHIJKL'COUNT EQU -STR1BUF DB COUNT DUP(0)DATA ENDS下面程序段就是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。

合集下载

微机原理及应用(陈继红、徐晨)课后习题答案

微机原理及应用(陈继红、徐晨)课后习题答案

微机原理及应⽤(陈继红、徐晨)课后习题答案微机原理及应⽤(陈继红、徐晨)课后习题答案第三章8086/8088指令系统和寻址⽅式习题答案(部分)3.1总结计算机中⼗进制、⼆进制、⼋进制及⼗六进制数的书写形式。

123D、0AFH、77Q、1001110B分别表⽰什么计数制的数?答案:123D、0AFH、77Q、1001110B分别表⽰⼗进制、⼗六进制、⼋进制、⼆进制。

3.2字长为8位、16位⼆进制数的原码、补码表⽰的最⼤数和最⼩数分别是什么?答案:8位原码表⽰的最⼤数:(27-1)、8位补码表⽰的最⼤数:(27-1)、8位原码表⽰的最⼩数:-(27-1)、8位补码表⽰的最⼩数-27。

16最⼩数:-215。

3.3答案:7DH。

(2)255(3)7248H。

(4)509013E2H。

3.4答案:240D0F0H。

128D80H。

(3)11111111⼗进制数:255D;⼗六进制数:0FFH。

(4)01010101⼗进制数:85D;⼗六进制数:55H。

3.5把下列⽆符号⼗六进制数分别转换为⼗进制数和⼆进制数。

(1)FF(2)ABCD(3)123(4)FFFF答案:(1)FF⼗进制数:255D;⼆进制数;11111111B。

1010101111001101B。

(3)123⼗进制数:291D;⼆进制数;000100100011B。

(4)FFFF⼗进制数:65535D;⼆进制数;1111111111111111B。

3.6分别⽤8位⼆进制数和16位⼆进制数写出下列⼗进制数的原码和补码。

(1)16(2)-16(3)+0(4)-0(5)127(6)-128(7)121(8)-9 答案:(1)16800010000(2)-16800010000(3)+0800000000(4)-0800000000(5)127801111111(6)-128810000000(7)1218:01111001;16位⼆进制数原码:0000000001111001补码:0000000001111001。

微机原理第三章课后习题答案

微机原理第三章课后习题答案

ß 1. DS=1000H, BX=0200H, SI=0002H (10200H~10205H)依次存有10H,2AH,3CH,46H,59H,6BH ,给出执行指令后AX 的内容。

(1)MOV AX ,0200HAX=0200 (2)MOV AX ,[200H] 物理地址=1000H ×10H+0200H=10200H, AX=2A10H(3)MOV AX ,BXAX=0200H (4)MOV AX ,3[BX]物理地址=1000H ×10H +0200H+3H=10203H, AX=5946H (5)MOV AX ,[BX+SI] 物理地址=1000H ×10H+0200H +2H=10202H , AX=463CH(6)MOV AX ,2[BX+SI] 物理地址=1000H ×10H +200H+2H+2H=10204H , AX=6B59H ß 2.DS=1000H ,ES=2000H ,SS=3500H ,SI=00A0H , DI=0024H ,BX=0100H ,BP=0200H ,VAL=0030H ,指出寻址方式和物理地址。

(1)MOV AX ,[100H] (2)MOV AX ,VAL(3)MOV AX ,[BX] (4)MOV AX ,ES:[BX](5)MOV AX ,[SI] (6)MOV AX ,[BX+10H](7)MOV AX ,[BP] (8)MOV AX ,VAL[BP][SI](9)MOV AX ,VAL[BX][DI] (10)MOV AX ,[BP][DI](1)MOV AX, [100H] 直接寻址方式,10100H物理地址=DS ×10H+100H=10000H+0100H=10100H(2)MOV AX, V AL 直接寻址方式,10030H物理地址=DS ×10H+V AL=10000H+0030H=10030H(3)MOV AX, [BX] 寄存器间接寻址,10100H物理地址=DS ×10H+BX=10000H+0100H=10100H(4)MOV AX, ES:[BX] 寄存器间接寻址,20100H物理地址=ES ×10H+BX=20000H+0100H=20100H(5)MOV AX, [SI] 寄存器间接寻址,100A0H物理地址=DS ×10H+SI=10000H+00A0H=100A0H(6)MOV AX, [BX+10H] 寄存器相对寻址,10110H物理地址=DS ×10H+BX+10H=10000H+0100H+10H=10110H(7)MOV AX, [BP] 寄存器间接寻址,35200H物理地址=SS ×10H+BP=35000H+0200H=35200H(8)MOVAX, V AL[BP][SI] 相对基址变址寻址,352D0H 物理地址=SS ×10H+BP+SI+V AL=35000H+0200H+00A0H+0030H=352D0H (9)MOVAX, V AL[BX][DI] 相对基址变址寻址,10154H 物理地址=DS ×10H+BX+DI+V AL=10000H+0100H+0024H+0030H=10154H (10)MOV AX, [BP][DI] 基址变址寻址,35224H物理地址=SS ×10H+BP+DI=35000H+0200H+0024H=35224Hß 3.判断并说明原因(1)MOV DL ,AX 错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致 (2)MOV 8650H ,AX 错,目的操作数不可以是立即数错,目的操作数不可以是立即数(3)MOV DS ,0200H 错,MOV 指令不允许将立即数传入段寄存器 (4)MOV [BX],[1200H] 错, MOV 指令的两个操作数不能同时为存储器指令的两个操作数不能同时为存储器(5)MOV IP ,0FFH 错, IP 不能作为MOV 指令的目的操作数指令的目的操作数(6)MOV [BX+SI+3],IP 错, IP 不能作为MOV 指令的源操作数指令的源操作数(7)MOV AX ,[BX][BP] 错,BX 与BP 不可以同时出现在源操作数当中(8)MOV AL ,ES:[BP] 对(9)MOV DL ,[SI][DI] 错,SI 与DI 是两个变址寄存器,不可以同时出现在源操作数中。

李伯成《微型计算机原理及应用》课后习题答案

李伯成《微型计算机原理及应用》课后习题答案

李伯成《微机原理》习题第三章3.1MOV AX,00H;立即寻址SUB AX,AX;寄存器寻址MOV AX,[BX];寄存器间接寻址MOV AX,TABLE;直接寻址MOV AL,ARAY1[SI];寄存器相对寻址MOV AX,[BX+6];寄存器相对寻址3.2若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。

程序片段如下:ORG 100hMOV CX,03FFH;数据个数LEA SI,TABLE;源区首地址LEA DI,NEXT;目的区首地址AGAIN: MOV AL,[SI];MOV [DI],AL;搬移INC SIINC DI;移动地址指针DEC CX;循环计数器递减JNZ AGAIN;循环未结束转HLT;暂停TABLE DB 1024 dup ('A');源数据区NEXT DB 1024 dup (0);目的数据区3.3编写10个字(16位二进制数)之和的程序ORG 100hLEA SI,ADD1;LEA DI,ADD2;LEA BX,SUM;MOV CL,CONT;MOV CH,0; 循环初始化CLC;进位清零MADD1: MOV AX,[SI];读加数1ADC AX,[DI]ADD SI,2;移动源区地址指针ADD DI,2;移动目的区地址指针MOV [BX],AX;回存计算结果ADD BX,2;移动“和”存储区地址指针LOOP MADD1;循环控制HLT;暂停ADD1 DB 0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1ADD2 DB 56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H;加数2SUM DB 10 DUP (0);和存储单元CONT DB 5 ;循环次数3.4 某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS 和REMAIN中。

[工学]微机原理习题课

[工学]微机原理习题课

一、 8086/8088的内部结构
通 用 寄 存 器 AH AL BH BL CH CL DH DL SP BP DI SI 20位 CS DS SS ES IP
地址加法
16位 输入/输出 控制电路
16位
运算寄存器 ALU 标志 执行部件(EU) 执行 部分 控制 电路
内部暂存器
外 部 总 线
1 2 3 4 5 6
逻辑运算指令AND、OR、NOT、
逻辑运算和 移位指令
XOR、TEST 移位指令SHL/SHR、SAL/SAR 循环移位指令ROL/ROR、RCL/RCR
注意: 1、除NOT 不影响标志位,其他的逻辑运算指令影响SF、ZF、 PF ,AF不确定,CF和OF总为0 2、循环移位指令仅影响CF和OF
例:二进制数B3和E9H进行逻辑异或运算,其结果及 进位标志分别是 A 。 A、01011010,0 B、11111011,1 C、11111011,0 D、01011010,1
8位 指令队列缓冲器 总线接口部件(BIU)
二、总线周期、时钟周期、指令周期
BIU通过总线访问存储器或I/O接口所需要的时 间称为总线周期,一个总线周期只能访问一次存储 器或I/O接口,不同的总线操作要求不同数量的总线 周期。 时钟周期是CPU的最小时间单位,是频率f的倒 数。 通常一个总线周期由4个时钟周期组成。 指令周期是CPU执行一条指令所需的时间,指令 周期由若干个总线周期组成。 存取周期是指存储器进行相邻两次存取操作所需 的最小时间间隔。
例2:设字长n=4,已知X=-3,则下列4组等式中完全 正确的一组是 A 。 A、[2X]原 =1110 [2X]补=1010 B、[2X]原=1111 [2X]补=1010 C、[2X]原 =1110 [2X]补=1011 D、[2X]原 =1111 [2X]补=1011 例3:设[X]反 =24H,则[X]补 和 [-X/2]补 分别是 C 。 A、57H,D5H B、D7H,2BH C、24H,EEH D、24H,EDH

16。32位微机原理第3章课后习题答案

16。32位微机原理第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。

微机原理习题课

START: MOV AX,DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX MOV AX,STACK MOV SS,AX ……………
………………. MOV AH,4CH INT 21H CODE ENDS
80X86数据寻址方式总结
• 立即寻址 • 寄存器寻址 • 存储器寻址
16位指令模式下存储器寻址方式
段基址×10H+基址+变址+偏移量
• 直接寻址:数值地址或符号地址
• 寄存器间接寻址:有效地址在BX BP或SI DI
• 寄存器相对寻址:
BX
BP SI
8位偏移量 16位偏移量
DI
宏调用时的参数由汇编语言通过实参替换形 参的方式实现传递。
• 完整段定义模型 DATA SEGMENT ………….. DATA ENDS EXTRA SEGMENT …………. EXTRA ENDS STACK SEGMENT …………. STACK ENDS
CODEE ES:EXTRA,SS:STACK
9.下列程序是将两个8位组合BCD数(各占4 个字节)相加求和的程序。设两BCD数已 存入以BUF1,BUF2为首地址的内存单元中, 且低位在低地址,高位在高地址单元,结 果存回BUF1处。程序有若干错误,请改正。
.MODEL SMALL
.DATA
BUF1 DB 54H,76H,32H,10H
BUF2 DB 23H,88H,06H,20H
假设按16位实模式操作,确定下列每条指 令访问内存的物理地址并指出源操作数及 目的操作数的寻址方式。
(1)MOV AL,[1234]; (2)MOV EDX,[BX]
(3)MOV CL,[BX+100H]; (4)MOV [SI],EBX

微机原理第三章习题与参考答案

第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。

指出下列指令的寻址方式和物理地址。

(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。

(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。

微机原理第三章习题答案

习题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不变。

微机原理作业与答案第三章

8086第三章作业3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址(1)1000H 10000H-1FFFFH(2)1234H 12340H-2233FH(3)E000H E0000H-EFFFFH(4)AB00H AB000H-BAFFFH3-12对于下列CS:IP组合,计算出要执行的下条指令存储器地址。

(1)CS=1000H和IP=2000H 答:下条指令存储器地址:12000H(2)CS=2400H和IP=1A00H 答:下条指令存储器地址:25A00H(3)CS=1A00H和IP=B000H 答:下条指令存储器地址:25000H(4)CS=3456H和IP=ABCDH 答:下条指令存储器地址:3F12DH3-37 指出下列指令源操作数的寻址方式(1)MOV AX,1200H;立即数寻址(2)MOV BX,[1200H];直接寻址(3)MOV BX,[SI];变址寻址(4)MOV BX,[BX+SI+1200];相对基变址寻址(5)MOV [BX+SI],AL;寄存器寻址(6)ADD AX,[BX+DI+20H];相对基变址寻址(7)MUL BL ;寄存器寻址(8)JMP BX ;间接寻址(9)IN AL,DX ;寄存器间接寻址(10)INC WORD PTR[BP+50H] ;相对基址寻址小结:虽然对存储器的访问指令、输入/输出指令(IN指令和OUT指令)、跳转指令(JMP指令)都有直接寻址和间接寻址,但是形式是有很大差别的:1.直接寻址:(1)对于存储器的访问用方括号括起来的二进制数,如:MOV BX,[1200H](2)对于输入/输出指令(IN指令和OUT指令)用二进制数如:IN AX,8FH 又如: OUT 78H,AL(3)对于跳转指令(JMP指令)是以目标标号为直接地址的如: JMP ADDR12.间接寻址:(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址如:MOV AX,[BP](2)对于输入/输出指令用DX做间接寻址寄存器如:IN AX,DX 又如: OUT DX,AL(3)跳转指令直接写明寄存器即可 (段内)如: JMP BX段间需组合:如: JMP DWORD PTR [BX+ADDR1]3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档