微机原理复习资料(共1页).doc
精选优质文档-倾情为你奉上3.9 分别说明下列每组指令中的两条指令的区别。 MOV AX, TABLELEA AX, TABLE AND BL, 0FHOR BL, 0FH JMP SHORT L1JMP NEAR PTR L1 MOV AX, BXMOV AX, BX SUB DX, CXCMP DX, CX MOV BPSI , CLMOV DS: BPSI , CL答: 第一条指令将变量名TABLE 确定的一个字数据传送到AX 中;第二条指令取变量名TABLE 的16 位有效地址值传送到AX 中。 第一条指令将BL 中的内容和立即数0FH 相与,结果回送到BL 中;第二条指令将 BL 中的内容和立即数0FH 相或,结果回送到BL 中。 第一条指令为段内无条件短程转移,跳转的范围不得超过带符号的8 位二进制数表示的字节范围;第二条指令为段内无条件近程转移,跳转的范围不得超过带符号的 16 位二进制数表示的字节范围。 第一条指令源操作数为存储器,将BX 的内容确定的相邻两个存储单元中的内容传送到AX 中;第二条指令源操作数为寄存器,将 BX 的内容传送到AX 中。 第一条指令将DX 的内容减去CX 的内容,结果回送到DX 中;第二条指令只是将 DX 的内容和CX 的内容相减作大小比较,不回送结果。 第一条指令将CL 的内容传送到堆栈段中由BP+SI 确定的单元中;第二条指令将 CL 的内容传送到数据段中由BP+SI 确定的单元中2.6 什么是逻辑地址?什么是物理地址?在实模式下,如何求存储器的物理地址?设一个16 字的数据存储区,它的起始地址为70A0H:DDF6H.。写出这个数据区的首字单元和末字单元的物理地址。答:(1)逻辑地址由段基址(存放在段寄存器中)和偏移地址(由寻址方式提供)两部分构成,它们都是无符号的16 位二进制数。逻辑地址是用户进行程序设计时采用的地址。(2)物理地址是1M 内存空间中每个存储单元惟一的地址,由20 位二进制数构成。物理地址是CPU 访问内存时使用的地址。当用户通过编制程序将16 位逻辑地址送入CPU的总线接口部件BIU 时,地址加法器通过地址运算变换为20 位的物理地址。(3)20 位物理地址的计算公式为:物理地址段基址×16偏移地址首字单元的物理地址70A0H×16+DDF6H7E7F6H末字单元的物理地址7E7F6H+20H27E816H27E814H3.1 分别指出下列指令中源操作数和目标操作数的寻址方式。 MOV SI, 100寄存器 立即数 MOV CX, DATASI 寄存器 寄存器间接 ADD AX, BXDI 寄存器 基址加间址 SUB AH, DH寄存器 寄存器 AND DL, BX+SI+20H 寄存器 基址加间址 MOV BP+1054H, AX基址寄存器 寄存器 OR DI+3000H, BX寄存器间接 寄存器 XOR BP+SI, AL基址加间址 寄存器 MOV EAX, EBX寄存器 寄存器 MOV EAX, ECXEBX 寄存器基址加间址11 MOV EAX, ESIEDX×2 寄存器 基址加比例间址12 MOV EAX, ESI×8 寄存器比例间址3.2 设DS1000H, BX2865H, SI0120H,偏移量D47A8H,试计算下列各种寻址方式下的有效地址,并在右边答案中找出正确答案,将它的序号填入括号内: 使用 D 的直接寻址 ( ) A. 2865H 使用 BX 的寄存器间接寻址 ( ) B. 700DH 使用 BX 和D 的寄存器相对寻址 ( ) C. 47A8H 使用 BX、SI 和D 的相对基址变址寻址 ( ) D. 2985H 使用 BX、SI 的基址变址寻址 ( ) E. 712DH答: (C) (A) (B) (E) (D)3.12 编写一程序段,实现下述要求。 将存储器中1A00H 单元中的一个字节数据传送到1B00H 单元中; 使 AX 寄存器的低四位清0,其余位不变; 使 AL 寄存器的低四位保持不变,高四位取反; 使 DH 寄存器的低四位为1,高四位不变。答: MOV AL, 1A00HMOV 1B00H, AL AND AX, 0FFF0H XOR AL, 0F0H OR DH, 0FH3.15 试编写出将内存2500H 开始的256 个字节单元清0 的程序。答:MOV CX, 256MOV AL, 0MOV BX, 2500HAA: MOV BX, ALINC BXLOOP AAHLT4.1 将下列左边各项与右边的名词对应起来,找出正确答案的序号填入括号中。 使计算机执行某种操作的命令 ( )A.代码段 表示计算机执行某种操作的符号 ( )B.源程序 使汇编程序执行某种操作的命令 ( )C.汇编程序 用汇编语言或高级语言编写的程序 ( )D.指令 以机器码指令组成的程序 ( )E.伪指令 指出指令在程序中位置的符号地址 ( )F.编译程序 指出数据存储单元的符号地址 ( )G.目标程序 将高级语言的程序翻译成机器码程序的实用程序 ( )H.助记符 存放指令机器码的存储器区段 ( )I.标号 将汇编语言程序翻译成机器码程序的实用程序 ( )J.变量答:4.10 已知:ORG 0200HARY DW -1,2,-3,-4CNT DW $ARYVAR DW ARY,$4MOV AX,ARYMOV BX,OFFSET VARMOV CX,CNTMOV DX,VAR+2LEA SI,ARY此段程序执行后,AX( -1 ),BX(020AH),CX( 8 ),DX(020AH),SI(0200H )。4.11 给出符号定义语句如下:FIRST DB ABCD,3,?,0FHSECOND DB ?Y EQU SECONDFIRST求 Y 的值是多少?答:Y 的值是7。4.14 对于下面的数据定义,写出各条指令执行后的结果。AA DB ?BB DW 10 DUP(1)CC DB 1 2 3 4 5 MOV AX,TYPE AA AX=( ) MOV AX,TYPE BB AX=( ) MOV CX,LENTH BB CX=( ) MOV CX,LENGTH CC CX=( ) MOV BX,SIZE BB BX=( )答:答案如下: MOV AX,TYPE AA AX=( 0001H ) MOV AX,TYPE BB AX=( 0002H ) MOV CX,LENTH BB CX=( 000AH ) MOV CX,LENGTH CC CX=( 0001H ) MOV BX,SIZE BB BX=( 0014 H )4.15 分析下列程序段,指出在什么情况下该段程序的执行结果为AH=0?BEGIN: IN AL,5FHTEST AL,80HJZ EXITMOV AH,0JMP DONEEXIT: MOV AH,0FFHDONE: HLT4.16 阅读程序并回答问题: 在(a)(b)处填写与其左边指令等效的指令或指令序列; 程序的功能是( ),所依据的算式是( )。 程序执行后,DEDT 单元内容为( )。DATA SEGMENTBITD DW 128H,64H,32H,16H,8H,4H,2H,1HSOCB DB 0D2HDEDT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV BL,SOCBLEA SI,BITD (a)MOV CX,8MOV AX,0L1: SHL BL,1JNC L2ADD AL,SIDAAMOV DL,ALADC AH,SI+1MOV AL,AHDAAMOV AH,ALMOV AL,DLL2: ADD SI,2LOOP L1 (b)MOV DEDT,AXMOV AH,4CHINT 21HCODE ENDSEND START答:(a)MOV SI, OFFSET BITD(b)LOOPNZ L1 或LOOPNE L1(执行 ADD SI,2 指令,ZF 不可能为0,因而可用此指令代替。)程序的功能是:根据给定的逻辑尺0D2H 对数据区BITD 中BCD 数进行BCD 加法;所依据的算式是(128H64H16H2H)。程序执行后,DEDT 单元内容为(210H)4.20 逐条注释下列两个程序的每条指令,并说明它们的功能: LEA BX,ARRAY ;取数组ARRAY 的偏移地址并存入寄存器BXLEA DI,RESULT ;取数组RESULT 的偏移地址并存入寄存器DIMOV CL,4 ;给寄存器CL 赋初值4AGAIN: MOV AL,BX ;将数组ARRAY 的第一个数存入寄存器ALTEST AL,80H ;测试AL 的最高位JZ NEXT ;若AL 最高位为0(正数),转到NEXTNEG AL ;若AL 最高位为1(负数),对寄存器AL 中的;数求补NEXT: MOV DI,AL ;将结果存入REAULT 数组INC BX ;BX 值加1,地址指针指向ARRAY 数组的下;一个数INC DI ;DI 值加1,地址指针指向RESULT 数组的下;一个数DEC CL ;寄存器CL 值减1JNZ AGAIN ;若CL 值不为0,转向AGAIN 继续执行程序段功能:将数组 ARRAY 中的4 个字节数求补,结果存入数组RESULT 中 MOV AL,0 ;将寄存器AL 清0MOV SI,1 ;给寄存器SI 赋初值1MOV CX,100 ;给寄存器CX 赋初值100LOP: INC SI ;SI 加1MOV AL,A1SI ;将数据缓冲区A1 中的数存入寄存器ALADD AL,A2SI ;将数据缓冲区A2 中的相应数与AL 相加MOV SUM SI,AL ;将结果存入数据缓冲区SUM 中LOOPNZ LOP ;若CX10 且ZF0,转向LOP 继续执行JZ NEXT ;若ZF1,转向NEXT 继续执行ZERO: RET ;子程序返回NEXT: INC CX ;寄存器CX 值加1JMP ZERO ;无条件转向ZERO 继续执行程序段功能:将长度均为100 的数据缓冲区A1 和A2 中的相应数相加,结果存入数据缓冲区SUM 的相应位置,若相加结果为0 则退出循环。专心-专注-专业