16位汇编学习笔记(二)——汇编语言的语句

语句的类型

指令语句:具有对应的机器码

伪指令语句:无对应的机器码
指示汇编程序如何汇编源程序,包括括号,变量,段的定义

宏指令语句:宏汇编中的宏指令语句,暂不介绍

语句的格式

指令语句:【标号:】 指令助记符 【操作数【, 操作数】】 ;注释
操作数:常数(数值表达式), 寄存器(寄存器名), 储存器操作数(地址表达式)

伪指令: 【名字】 伪指令定义符号 【参数【,参数】】 ;注释
伪指令定义符规定了伪指令的功能。
参数的个数和类型由伪指令的不同而不同;
参数:常数(数值表达式),也可以是符号。
名字,有的伪指令可以缺省。

宏指令语句:此处暂不介绍

名字和标号的规定:最多由31个字母,数字及规定的特殊字符(?@_$)构成,不可以以数字开头,不能用保留名,不区分大小写,名字后面没有冒号,标号后面有冒号(名字和标号应该有意义)

数值表达式

汇编语言中,通过运算符,操作符及括号把常数和符号连接起来,得到表达式。

算术表达式

1,常数

一,十进制常数,D结尾,不加后缀的数字默认为10进制
二,十六进制,H结尾
三,二进制数,B结尾
四,八进制数,Q结尾
五,字符串常数:引号括起来的一个或者多个字符;
例如: CMP AL, ‘A’
将A转换为ASCII值运算

使用伪指令改变默认进制,例:RADIX 16 ;将默认进制改为16进制
建议:写上常数后缀防止看错

2,算术运算符

+,-, *, /, mod

3,关系运算符

EQ:相等
NE:不等
LT:小于
GT:大于
LE:小于等于
GE:大于等于

运算结果:成立为FFFFH,不成立为0

4,逻辑运算符

AND,OR,XOR,NOT,
SHL(左移),
SHR(右移)

5,操作符(数值表达式)

HIGH:取高八位
LOW:取低八位
LENGTH:取DUP值,无DUP返回1
SIZE:取变量长度
OFFSET:返回变量或者标号的偏移地址
SEG:返回变量或者标号的的段值
TYPE:返回变量或者标号的类型:
变量:DB为1, DW为2, DD为4, DF为8
标号:NEAR为-1, FAR为-2
表达式如果是常数,返回0

另外还有WIDTH,MASK,此处暂不介绍

运算符优先顺序

https://blog.csdn.net/qq_45554268/article/details/105178517

地址表达式:

地址表达式表示存储器操作数的地址。
存储器地址加或减一个数字量,结果仍是存储器地址,相当于指针偏移。

课后练习题

笔者自己做的答案,不一定正确,标答请度娘搜索
1、伪指令语句与指令语句的本质区别是什么?伪指令的主要作用是什么?
答:伪指令语句无对应的机器码。指示汇编程序如何汇编源程序,包括括号,变量,段的定义
2、汇编语言中的表达式与高级语言中的表达式有何相同点和不同点?
答:此处以C语言为对比,都具有算术表达式,且格式类似。不同点是汇编语言具有地址表达式,能够通过地址表达式直接访问存储器。
3、汇编语言中数值表达式和地址表达式有何区别?
答:数值表达式计算的结果是数值,可以用于运算的。地址表达式运算结果是地址(相当于指针),供寻址访问数据用
4、请计算如下各数值表达式的值:

(1)23H AND 45H OR 67H
答:0110 0111
(2)1234H/16+10H
答:133(此题可以使用位运算的思想做,向右移4位,很快滴)
(3)NOT(65535 XOR 1234H)
答:1234H
(4)1024 MOD 7+3
答:5
(5)LOW 1234 OR HIGH 5678H
答:1101 0110
(6)23 SHL 4
答:30H
(7)“Eb” GE 4562H XOR -1
答: FFFFH
(8)1234H SHR 6
答:0048H
(9)‘a’ AND (NOT (‘a’-‘A’))
答:0010 0001
(10)‘H’ OR 00100000B
答:0110 1000
(11)76543Q LT 32768 XOR 76543Q
答:829CH
(12)3645H AND 0FF00H
答:3600H
5、请计算如下程序片段中各地址表达式的值,设BX=1000H,SI=2000H,DI=3000H,BP=4000H:

(1)[BX+100H]
答:1100H
(2)[DI][BP]
答:7000H
(3)2000H[SI]
答:4000H
(4)10H[BX][SI]
答:3010H
(5)[BP-128]
答:3F80H
(6)[BX][DI-2]
答:3FFEH

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值