微机原理与接口技术习题解答内容摘要:
H] (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, VAL[BX] (11) MOV AX, [BX][SI] (12) MOV AX, VAL[BX][SI] 【解答】 (1) MOV AX, 21H 立即寻址,源操作数直接放在指令中 (2) MOV AX, BX 寄存器寻址,源操作数放在寄 存器 BX 中 (3) MOV AX, [1000H] 直接寻 址, EA = 1000H, PA =( DS) 10H+ EA = 2020H 10H+ 1000H = 21000H (4) MOV AX, VAL 直接寻 址, EA = [VAL] = 0050H, PA =( DS) 10H+ EA = 2020H 10H+ 0050H = 20200H (5) MOV AX, [BX] 寄存器间接寻址, EA =( BX) = 0100H, PA =( DS) 10H+ EA = 2020H 10H+ 0100H = 20200H (6) MOV AX, ES: [BX] 寄存器间接寻址, EA =( BX) = 0100H, PA =( ES) 10H+ EA = 2100H 10H+ 0100H = 21100H (7) MOV AX, [BP] 寄存器间接寻址, EA =( BP) = 0010H, PA =( SS) 10H+ EA = 1500H 10H+ 0010H = 15010H (8) MOV AX, [SI] 寄存器间接寻址, EA =( SI) = 00A0H, PA =( DS) 10H+ EA = 2020H 10H+ 00A0H = 200A0H (9) MOV AX, [BX+10] 相对寄存器寻址, EA =( BX)+ 10D = 0100H+ 000AH= 010AH, PA =( DS) 10H+ EA = 2020H 10H+ 010AH = 2020AH (10) MOV AX, VAL[BX] 相对寄存器寻址, EA =( BX)+ [VAL]= 0100H+ 0050H= 0150H, PA =( DS) 10H+ EA = 2020H 10H+ 0150H = 20200H (11) MOV AX, [BX][SI] 基址变址寻址, EA = ( BX)+( SI) = 0100H+ 00A0H = 01A0H, PA = ( DS) 10H+ EA = 2020H 10H+ 01A0H = 201A0H (12) MOV AX, VAL[BX][SI] 相对基址变址寻址, EA = ( BX)+( SI)+ [VAL]= 0100H+ 00A0H+ 0050H = 01F0H, PA =( DS) 10H+ EA = 2020H 10H+ 01F0H = 201F0H 10 给定寄存器及存储单元的内容为: (DS) = 2020H, (BX) = 0100H, (SI) = 0002H, (20200) = 32H,(20201) = 51H, (20202) = 26H, (20203) = 83H, (21200) = 1AH, (21201) = B6H, (21202) = D1H, (21203) = 29H。 试说明下列各条指令执行完后, AX 寄存器中保存的内容是什么。 (1) MOV AX, 1200H (2) MOV AX, BX (3) MOV AX, [1200H] (4) MOV AX, [BX] (5) MOV AX, 1100H[BX] (6) MOV AX, [BX][SI] 【解答】 (1) MOV AX, 1200H ; 执行后, ( AX) = 1200H (2) MOV AX, BX ; 执行后, ( AX) = ( BX) = 0100H (3) MOV AX, [1200H] 直接寻 址, EA = [VAL] = 1200H, PA =( DS) 10H+ EA = 2020H 10H+ 1200H = 21200H, 执行后, ( AX) = B61AH (4) MOV AX, [BX] EA = ( BX) = 0100H, PA =( DS) 10H+ EA = 2020H 10H+ 0100H = 20200H, 执行后, ( AX)= 5132H (5) MOV AX, 1100H[BX] EA =( BX)+ 1100H = 0100H+ 1100H = 1200H, PA =( DS) 10H+ EA = 2020H 10H+ 1200H = 21200H, 执行后, ( AX) = B61AH (6) MOV AX, [BX][SI] EA =( BX)+( SI) = 0100H+ 0002H = 0102H, PA =( DS) 10H+ EA = 2020H 10H+ 0102H = 20202H, 执行后, ( AX) = 29D1H 分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1) MOV AH, BX (2) MOV [BX], [SI] (3) MOV AX, [SI][DI] (4) MOV MYDAT[BX][SI], ES: AX (5) MOV BYTE PTR[BX], 1000 (6) MOV BX, OFFSET MAYDAT[SI] (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, [SI][DI] 错误,寻址方式中只能出现一个变址寄 存器,可改为 MOV AX, [BX][DI]。 (4) MOV MYDAT[BX][SI], ES: AX 错误, AX 签不能有段跨越前缀,去掉 ES:,改为 MOV MYDAT[BX][SI], AX (5) MOV BYTE PTR[BX], 1000 错误, 1000 超出字节空间存储范围 (6) MOV BX, OFFSET MAYDAT[SI] ; 正确 (7) MOV CS, AX 错误, MOV指令 CS 不能做目的操作数,可改为 MOV DS, AX (8) MOV DS, BP ; 正确 注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。 设 VAR VAR2 为字变量, LAB 为标号,分析下列指令的错误之处并加以改正。 (1) ADD VAR1, VAR2 (2) MOV AL, VAR2 (3) SUB AL, VAR1 (4) JMP LAB[SI] (5) JNZ VAR1 (6) JMP NEAR LAB 11 【解答】 (1) ADD VAR1, VAR2 错误,两个操作数不能都为存储单元,可改为 MOV BX, VAR2 ADD VAR1, BX (2) MOV AL, VAR2 错误,数据类型不匹配,可改为 MOV AX, VAR2 (3) SUB AL, VAR1 错误,数据类型不匹配,可改为 SUB AX, VAR1 (4) JMP LAB[SI] 错误,寄存器相对寻址形式中不能用标号做位移量,可改为 JMP VAR1[SI] (5) JNZ VAR1 错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。 可改为 JNZ LAB (6) JMP NEAR LAB 错误,缺少运算符 PTR,可改为 JMP NEAR PTR LAB 注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。 写出能够完成下列操作的 8086CPU 指令。 (1) 把 4629H 传送给 AX 寄存器 ; (2) 从 AX 寄存器中减去 3218H; (3) 把 BUF 的偏移地址送入 BX 中。 【解答】 (1) MOV AX,4629H (2) SUB AX,3218H (3) LEA BX,BUF 根据以下要求写出相应的汇编语言指令。 (1) 把 BX 和 DX 寄存器的内容相加,结果存入 DX 寄存器中; (2) 用 BX 和 SI 的基址变址寻址方式,把存储器中的一个字节与 AL 内容相加,并保存在 AL 寄存器中; (3) 用寄存器 BX 和位移量 21B5H 的变址寻址方式把存储器中的一个字和 (CX)相加,并把结果送回存储器单元中; (4) 用位移量 2158H 的直接寻址方式把存储器中的一个字与数 3160H 相加,并把结果送回该 存储器中; (5) 把数 25H 与 (AL)相加,结果送 回寄存器 AL 中。 【解答】 (1) ADD DX,BX (2) ADD AL,[BX][SI] (3) ADD 21B5H[BX],CX (4) ADD WORD PTR [2158H],3160H (5) ADD AL,25H 写出将首地址为 BLOCK的字数组的第 6 个字送到 CX 寄存器的指令序列,要求分别使用以下几种寻址方式: 12 (1) 以 BX 的寄存器间接寻址 (2) 以 BX 的寄存器相对寻址 (3) 以 BX、 SI 的基址变址寻址 【解答】 (1) LEA BX,BLOCK+10 MOV CX,[BX] (2) LEA BX,BLOCK MOV CX,10[BX] (3) LEA BX,BLOCK MOV SI,10 MOV CX,[BX][SI] 执行下列指令后, AX 寄存器中的内容是什么。 TABLE DB 10, 20, 30, 40, 50 ENTRY DW 3 ?? MOV BX, OFFSET TABLE ADD BX, ENTRY MOV AX, [BX] AX= 【解答】 AX= 3228H 下面是将内存一字节数据高 4位和低 4位互换并放回原 位置的程序,找出错误并改正。 DATA SEGMENT DD1 DB 23H DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA SI, OFFSET DD1 MOV AL, [SI] MOV CL, 4 RCR AL, CL MOV [SI], AL MOV AH, 4CH INT 21H CODE ENDS END START 【解答】 程序第 8 行错误: LEA SI, OFFSET DD1,应去掉 OFFSET; 程序第 10 行错误: RCR AL, CL,应使用 ROR 或 ROL,改为 ROR AL, 已知用寄存器 BX 作地址指针,自 BUF所指的内存单元开始连续存放着 3 个无符号数字数据,编程序求它们的和,并将结果存放在这 3 个数之后。 【解答】 参考程序如下: LEA BX,BUF 13 MOV AX,[BX] ADD AX,[BX+2] ADD AX,[BX+4] MOV [BX+6],AX 分析汇编语言源程序应该由哪些 逻辑段 组成。 各段的作用是 什么。 语句标号和变量应具备哪3 种属性。 【解答】 汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、 代码段、堆栈段和附加数据段,至少要有一个代码段。 各段的作用 如下: ( 1)代码段用来存放程序和常数。 ( 2)数据段用于数据的保存。 ( 3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。 ( 4)附加数据段用于数据的保存。 语句标号和变量应具备的 3 种属性:段属性、偏移属性和类型属性。 执行完下列程序后,回答指定的问题。 MOV AX, 0 MOV BX, 2 MOV CX, 50 LP: ADD AX, BX ADD BX, 2 LOOP LP 问: (1) 该程序。微机原理与接口技术习题解答
相关推荐
三角形符号指示出了标号为 BEG 的那条指令是启动指令。 3. 动态调试 (1) 连续执行程序 按 F9 键 ( 即 Run | Run),即可从 BEG 开始连续执行程序。 (2) 查看执行结果 按 Alt+F5 键 (即 Window | User screen),临时切换到 DOS 屏幕,可查看程序的执行结果,即 5 行 HELLO。 注意: Alt 键要多按一会儿,直到快捷键提
存入 5 位十进制数的 ASCll 码,即 E3500(回车) ,并输入 33 3 3 35; ③ G=2020(回车) ,运行以上程序; 15 ④ D350A,显示结果为: 0000: 350A 0l 02 03 04 05 CC ⑤ 反复试几组数,考查程序的正确性。 3.将十六位二进制数转换为 ASCII 码表示的十进制数 十进制 数的值域为 0~ 65535,最大可转换为 5 位十进制数。
4)在指令 MOV AX, VAL 中,源操作数 字段的寻址方式是直接寻址,其物理地址值 =( DS) *10H+50H =29000H+50H=29050H; ( 5)在指令 MOV AX, [BX] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值 =( DS) *10H +( BX) =29000H+100H=29100H; ( 6)在指令 MOV AX, ES: [BX] 中
D ADD 指令对 6 个状态标志均产生影响。 带进位的加法 ADC ADC 指令在形式上和功能上与 ADD 类似,只是 相加时还要包括进位标志 CF 的内容 加 1 指令 INC 格式: INC reg/mem 功能:类似于 C 语言中的 ++操作:对指定的操作数加 1 注:本指令不影响 CF 标志。 减法指令 不考虑借位的减法指令 SUB 考虑借位的减法指令 SBB 减 1指令 DEC
;查表得: AL = 12H 输入输出指令( Input and Output) IN 指令: 从数据端口输入数据或从状态端口输入状态字。 OUT 指令:输出数据或命令给指定的 I/O 端口。 直接输入输出指令 格式: IN AL, PORT ; AL (PORT) IN AX, PORT ; AX (PORT+1, PORT) OUT PORT, AL ; (PORT)
0H+0A0H =291A0H; ( 12)在指令 MOV AX, [BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值 =( SS) *10H+( BP) +( SI) =15000H+10H+0A0H =150B0H。 ( 1) MOV SI, 200 ( 2) MOV CX, DATA[SI] ( 3) ADD AX, [BX+DI] ( 4) AND AX, BX (