汇编语言与接口技术(第四版)第四章课后习题答案-清华大学出版社

本文详细介绍了编程中的关键概念,如变量与标号的区别、数值和地址表达式、常量类型,以及常见的指令错误分析。还涵盖了字节和字变量的处理、算术运算、数据段定义及传送指令对寄存器AX的影响。
摘要由CSDN通过智能技术生成

6、区分下列概念
(1)变量和标号
(2)数值表达式和地址表达式
(3)符号常量和字符串常量
7、假设MYWORD是一个字变量,而MYBYTE1和MYBYTE2是字节变量,指出下列语句中的错误。
(1)MOV BYTE PTR[BX],1000
前面按照字节寻址,但是源操作数1000不是一个字节,1个字节8位最多能表示255,所以错误在于操作数类型不匹配
(2)MOV BX,OFFSET[SI]
OFFSET的使用格式如下:
OFFSET 名字/标号;所以其不能直接放在寄存器组前面组合使用
(课本116页)
(3)CMP MYBYTE1,MYBYTE2
两个操作数不能都是存储器变量
(4)MOV AL,MYBYTE1+MYBYTE2
源操作数中两个存储器变量不能进行加法操作
但是比如这样的形式是可行的:MOV AX,3*4+5(课本第109页)
(5)SUB AL,MYWORD
显然不可行,操作数类型不匹配,前者是字节类型,后者是字类型
(6)JNZ MYWORD
JNZ指令后面应该是标号,不能是变量
8、设OPRL是一个常量,下列语句中两个AND操作有什么区别
AND AL,OPRL AND 0FEH
前面的AND表示一条硬指令,而后面的AND表示一个逻辑运算符“与”
9、请给出下列语句中的指令立即数(数值表达式的值)
(1)MOV AL,23H AND 45H OR 67H
0010-0011H
0100-0101H    相与结果:0000-0001H,也就是01H
0000-0001H
0110-0111H    相或结果:0110-0111H,也就是67H
最终结果 67H
(2)MOV AX,1234H/16+10H
1234H/16就相当于右移4位 结果是0123H.
再加上10H,结果就是0133H.
(3)MOV AX,NOT(65535 XOR 1234H)
65535就是2^16-1,所以就是  1111-1111-1111-1111H.
异或表示不同为1,而1234H:0001-0010-0011-0100H
最终结果:1110-1101-1100-1011H
也就是 0EDCBH
!注意,还要去一个NOT
NOT(1110-1101-1100-1011H)--->0001-0010-0011-0100H-->1234H
(4)MOV AL,LOW 1234H OR HIGH 5678H
0001-0010-0011-0100H
所以LOW 1234H-->0011-0100H(低字节是34H)
0101-0110-0111-1000H
所以HIGH 5678H-->0101-0110H(高字节是56H)
最终结果 0111-0110H--->76H
(5)MOV AX,23H SHL 4
最终结果:30H
(6)MOV AX,1234H SHR 6
0001-0010-0011-0100H
0000-0000-0100-1000H:最终结果 0048H
(7)MOV AL,'A' AND (MOT ('A'-'A'))
NOT('A'-'A')--->1
'A'--->41H 0100-0001H
最终结果:0100-0001H 也就是41H
(8)MOV AL,'H' OR 00100000B
H--->48H 0100-1000H
最终结果:0110-1000H 也就是68H
(9)MOV AX,(76543 LT 32768) XOR 7654H
LT 表示小于 GT表示大于 GE表示大于等于 LE表示小于等于(课本109页)
所以最后结果:
0000-0000-0000-0000H
0111-0110-0101-0100H
0111-0110-0101-0100H--->7654H

11、请设置一个数据段MYDATASEG,按照如下要求定义变量


13、设在程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值