汇编语言知识点.docx
- 文档编号:4648295
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:20
- 大小:56.85KB
汇编语言知识点.docx
《汇编语言知识点.docx》由会员分享,可在线阅读,更多相关《汇编语言知识点.docx(20页珍藏版)》请在冰豆网上搜索。
汇编语言知识点
第一章
十进制与二进制之间的转换(P2)
降幂法
除法
十进制与六进制之间的转换(P5)
降幂法
除法
补码表示:
正数:
采用符号—绝对值法
负数:
先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示
补吗运算:
二进制数按位求反后在末尾加1
第二章
存储容量
1K=1024=210()1M=1024K=220()
1G=1024M=230()
1个二进制位:
(比特)8个二进制位:
(字节)1=8
2个字节:
1(字)1=2=16
存储单元地址和内容
1.存储器以字节(8)为编程单位
2.每个字节单元都有唯一的地址编码
3.地址用无符号整数来表示(编程用十六进制表示)
4.一个字要占用相继的两个字节
5.低位字节存入低地址,高位字节存入高地址
6.字单元地址用它的低地址来表示
7.机器以偶地址访问(读/写)存储器
物理地址=16´段地址+偏移地址
存储器的分段:
20根地址线:
地址范围00000H~
(1)
机器字长16位:
仅能表示地址范围0000H~(64)
小段:
每16个字节为一小段,共有64K个小段
段起始地址:
小段首地址
段的大小:
64K范围内的任意字节
存储器的逻辑分段优点:
允许程序在存储器内重定位;
允许实模式程序在保护模式下运行;
有利于程序和数据的分离。
中央处理器8086/8088寄存器组:
通用寄存器
数据寄存器:
,,,
变址寄存器:
、
指针寄存器:
、
控制寄存器:
、
段寄存器:
、、、
标志寄存器(/)
条件标志位:
溢出标志符号标志零标志
进位标志辅助进位标志奇偶标志
控制标志位:
方向标志中断标志陷阱标志
寄存器与存储器的比较:
寄存器:
在内部;访问速度快;容量小,成本高;用名字表示;没用地址
存储器:
在外部;访问速度慢;容量大,成本低;用地址表示;地址可用各种方式形成
第三章
寻址方式
操作数
所在位置
物理地址
()
格式
注意
1.立即寻址
存储器的代码段
无
5
只能用源操作数
操作数和源操作数的长度一致
2.寄存器寻址
寄存器
(唯一)
无
字节寄存器只有
不能用指令改变,
源操作数和目的操作数的字长一致
3.直接寻址
存储器
段地址
+位移量
:
[2000H]
[2000H]
默认的段地址存储在中
遇到的段地址存储在
可以使用段跨越前缀
4.寄存器
间接寻址
存储器
段地址
+基址
/变址
[]
:
[]
可用的寄存器
不允许使用、、
存放偏移地址()
和的字长一致
使用时,默认的数据段是,
其余都是
5.寄存器
相对寻址
存储器
段地址
+基址
/变址
+位移量
[]
:
[]
[]
可以使用段跨越前缀
6.基址变址寻址
存储器
段地址
+基址
+变址
[]
[][]
可以使用段跨越前缀
7.相对
基址变址
存储器
段地址
+基址
+变址
+位移量
[][]
[]
可以使用段跨越前缀
数据传送指令
传送指令内部寄存器之间的数据传送
指令格式:
执行操作:
()¬()
注意:
*、不能同时为段寄存器,´
*、不能同时为存储单元
*立即数不能直接送段寄存器,2000H´
*不能是立即数和
*不影响标志位
交换指令
指令格式:
1,2执行操作:
(1)«
(2)
例:
[],
注意:
*两个操作数字长一致
*两个操作数都不能是段寄存器
*两个操作数都不能是立即数
*两个操作数不能同时是存储单元
*可以采用除立即寻址方式外的任何一种寻址方式。
*不影响标志位
地址传送指令、、
1.有效地址送寄存器指令:
执行操作:
()¬
2.指针送寄存器和指令:
执行操作:
()¬()
()¬
(2)相继二字®寄存器、
3.指针送寄存器和指令:
执行操作:
()¬()
()¬
(2)相继二字®寄存器、
注意:
*源操作数必须为存储器操作数
*目的操作数必须是一个16位通用寄存器,不能是段寄存器
*源操作数可以是除立即寻址和寄存器寻址以外的任意一种寻址方式
*不影响标志位
堆栈操作指令、
1.进栈指令:
执行操作:
()¬()–2(()+1,())¬()
出栈指令:
执行操作:
()¬(()+1,())()¬()+2
堆栈:
‘先进后出’的存储区,段地址存放在中,在任何时候都指向栈顶,进出栈后自动修改。
注意:
*堆栈操作必须以字为单位。
*不影响标志位
*不能用立即寻址方式1234H´
*不能是´
堆栈的用途:
临时保存寄存器的内容。
……;其间用到、、
;后进先出
标志操作指令
、、、、、、、、、、
标志传送指令:
1.标志送指令:
执行操作:
()¬(的低字节)
2送标志寄存器指令:
执行操作:
(的低字节)¬()
注意:
*不影响标志位*影响、、、、
标志进栈指令:
执行操作:
()¬()-2(()+1,())¬()
标志出栈指令:
执行操作:
()¬(()+1,())()¬()+2
注意:
和经常一起联用,完成保护、维护标志寄存器的内容或改变标志位的值。
标志位操作指令:
清进位标志指令←0
置进位标志指令←1
进位标志取反指令←
清方向标志指令←0
置方向标志指令←1
清中断允许标志指令←0
置中断允许标志指令←1
注意:
*只影响本指令指定的标志
加减法指令:
加法指令:
执行操作:
()¬()+()
带进位加法指令:
执行操作:
()¬()+()+
加1指令:
执行操作:
()¬()+1
注意:
*除指令不影响标志外,均对状态标志位有影响。
各加法指令对条件标志位的影响:
1,结果为负1,结果为01,和的最高有效位有向高位的进位
1,两个操作数符号相同,而结果符号与之相反
位表示无符号数相加的溢出。
位表示带符号数相加的溢出。
减法指令:
执行操作:
()¬()-()
带借位减法指令:
执行操作:
()¬()-()-
减1指令:
执行操作:
()¬()-1
求补指令:
执行操作:
()¬-()
比较指令:
1,2执行操作:
(1)-
(2)
各减法指令对条件标志位()的影响:
1,被减数的最高有效位有向高位的借位或1减数转换为加法运算时无进位
1两个操作数符号相反,而结果的符号与减数相同
位表示无符号数减法的溢出。
位表示带符号数减法的溢出。
指令对的影响
0,操作数为01,操作数为-128(字节运算)或-32727(字运算
乘除运算指令
无符号数乘法指令:
带符号数乘法指令:
执行操作:
字节操作数()¬()*()
字操作数(,)¬()*()
注意:
*目的操作数必须是累加器
*()为隐含的乘数寄存器。
*()为隐含的乘积寄存器。
*不能为立即数。
*除和外,对条件标志位无
乘法指令对的影响:
指令:
=00乘积的高一半为零
11否则
指令:
=00乘积的高一半是低一半的符号扩展
11否则
例:
()=16A5H,()=0611H
(1);(,)¬()*()
;16A5*0611=008955
;()=0089H()=55H1
(2);()¬()*()
;A5*11Þ5B*11=060BÞF9F5
;()=0F9F5H1
无符号数除法指令:
带符号数除法指令:
执行操作:
字节操作()¬()/()的商()¬()/()的余数
字操作()¬(,)/()的商()¬(,)/()的余数
注意:
*()为隐含的被除数寄存器。
*()为隐含的商寄存器。
*()为隐含的余数寄存器。
*不能为立即数。
*对所有条件标志位均无定义。
类型转换指令
®
执行操作:
若()的最高有效位为0,则()=00H,若()的最高有效位为1,则()=
®()
执行操作:
若()的最高有效位为0,则()=0000H,若()的最高有效位为1,则()=
例:
()=045H
;()=0045H;()=0()=045H
注意:
*无操作数指令*隐含对或进行符号扩展*不影响条件标志位
逻辑运算指令
逻辑非指令:
*不能为立即数
执行操作:
()¬()*不影响标志位
0
0
*
*
*
无定义
逻辑与指令:
执行操作:
()¬()Ù()
逻辑或指令:
执行操作:
()¬()Ú()
异或指令:
执行操作:
()¬()"()
测试指令:
1,2执行操作:
(1)Ù
(2)
移位指令
逻辑左移,
逻辑右移,
算术左移,(同逻辑左移)
算术右移,
循环左移,
循环右移,
带进位循环左移,
带进位循环右移,
注意:
*可用除立即数以外的任何寻址方式
*1,,1
>1,,,;以为例
*条件标志位:
=移入的数值11时,最高有效位的值发生变化
01时,最高有效位的值不变
移位指令:
、、根据移位结果设置,无定义
循环移位指令:
不影响、、、
控制转移指令:
·无条件转移指令
·条件转移指令
/、/、/、/、
/、/、/、/、
/、
·循环指令、/、/
·子程序调用和返回指令、
·中断与中断返回指令、、
与转移地址有关的寻址方式:
用来确定转移指令及转子指令的转向地址
段内寻址段内直接寻址
段内间接寻址[]
段间寻址段间直接寻址
段间间接寻址[]
无条件转移指令:
段内直接短转移:
执行操作:
()←()+8位位移量
段内直接近转移:
执行操作:
()←()+16位位移量
段内间接转移:
执行操作:
()←()
段间直接远转移:
执行操作:
()←的段内偏移地址()←所在段的段地址
段间间接转移:
执行操作:
()←()()←
(2)
注意:
*不影响标志位
条件转移指令
注意:
*只能使用段内直接寻址的8位位移量*不影响标志位
(1)根据单个条件标志的设置情况转移
格式测试条件
()=1
()=0
=1
=0
=1
=0
=1
=0
=1
=0
(2)比较两个无符号数,并根据比较结果转移
格式测试条件
<()=1
≥()=0
≤()∨=1
>()∨=0
*适用于地址或双精度数低位字的比较
(3)比较两个带符号数,并根据比较结果转移*适用于带符号数的比较
格式测试条件
<()"=1
≥()"=0
≤()(")∨=1
>()(")∨=0
(4)测试的值为0则转移
格式测试条件
()=0
循环指令
注意:
*中存放循环次数
*只能使用段内直接寻址的8位位移量*不影响标志位
/
/
执行步骤:
(1)()←()–1
(2)检查是否满足测试条件,如满足则()←()+8位位移量,实行循环;
不满足则不变,退出循环
循环指令:
测试条件:
()¹0
为零或相等时循环指令:
()
测试条件:
1且()¹0
不为零或不相等时循环指令:
()
测试条件:
0且()¹0
例:
求首地址为的M个字之和,结果存入
M
0
:
[]
2
串处理指令
·串处理指令·串重复前缀
/
//
//
/
/
从串取指令:
(字节)
(字)
执行操作:
字节操作:
()←(()),()←()±1
字操作:
()←(()),()←()±2
注意:
*指令一般不与联用
*源串一般在数据段中(允许使用段跨越前缀来修改),
目的串必须在附加段中
*不影响条件标志位
存入串指令:
(字节)
(字)
执行操作:
字节操作:
(())←(),()←()±1
字操作:
(())←(),()←()±2
串传送指令:
(字节)
(字)
例:
:
[],:
[]
执行操作:
(1)(())←(())
(2)字节操作:
()←()±1,()←()±1
字操作:
()←()±2,()←()±2
方向标志0时用+,1时用-。
串扫描指令:
(字节)
(字)
执行操作:
字节操作:
()-(()),()←()±1
字操作:
()-(()),()←()±2
串比较指令:
(字节)
(字)
执行操作:
(1)(())-(())根据比较结果置条件标志位:
相等1;不等0
(2)字节操作:
()←()±1,()←()±1
字操作:
()←()±2,()←()±2
(与/配合工作)
执行操作:
(1)如()=0则退出,否则转
(2)
(2)()¬()-1
(3)执行//
(4)重复
(1)~(3)
:
将数据段中的整串数据传送到附加段中。
源串(数据段)→目的串(附加段)
执行之前,应先做好:
(1)源串首地址(末地址)→
(2)目的串首地址(末地址)→
(3)串长度→
(4)建立方向标志(使0,使1)
/
/(与和配合工作)
执行操作:
(1)如()=0或0
(1)则退出串操作,否则转
(2)
(2)()←()-1
(3)执行/
(4)重复
(1)~(3)
例:
从一个字符串中查找一个指定的字符
‘’
‘T’
8
例:
比较两个字符串,找出它们不相匹配的位置
1
2
8
例:
反向传送
1+7
2+7
8
第四章
标号和变量
(1)标号和变量都是标识符。
标识符组成:
字母,数字0~9,专用字符?
.@_$
标识符的组成规则:
最大长度为31,第一个字符不能是数字,不区分字母的大小写,不能是汇编语言的保留字
(2)标号和变量的异同:
不同:
标号:
用于汇编指令语句中,以冒号结束,在代码段中定义,经常在转移指令或指令
变量:
用于伪指令语句中,不允许有冒号,在数据段或附加段中定义,经常在操作数字段出现
相同:
都有三种属性:
段属性、偏移属性、类型属性
伪操作
是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、
存储器分配、指示程序开始结束等功能。
处理器选择伪操作段定义伪操作
程序开始和结束伪操作数据定义及存储器分配伪操作
表达式赋值伪操作地址计数器与对准伪操作
基数控制伪操作
段定义伪操作
;定义数据段
…
;定义附加段
…
;定义代码段
,
:
;段地址®段寄存器
…
说明:
语句序列
段假定伪指令
格式:
段寄存器名:
段名(这里只是一种指明,段寄存器的实际值,必须在程序中使用传送指令来赋值,除外)
数据定义及存储器分配伪操作:
[变量]助记符操作数[,操作数,…][;注释]
助记符:
例:
10,4,10H,?
100,1005,?
伪操作:
例:
50(?
)
表达式名表达式
9
18
[8]
说明:
1、2(表达式中的标号和变量要先定义,例如:
)
2、“=”伪操作(允许重复定义)
……
=7
……
=1
……
数值回送操作符:
、、、、
/变量/标号
功能:
回送变量或标号的偏址/段址
变量/标号/常数
常数
1
2
4
6
8
10
-1
-2
0
变量
功能:
回送由定义的变量的单元数,其它情况回送1
变量
功能:
*
例:
100(?
)
‘’
;,2
;,1
;,100
;,1
;,200
;,1
属性操作符:
、段操作符、、、、
类型表达式[],5
段操作符:
[],
标号
类型
1234H
2
和1234H
第五章
分支程序设计
(1)条件控制
(2)逻辑尺控制
(3)地址跳跃表(值与地址有对应关系的表)
第六章
调用指令
段内直接近调用:
执行操作:
()←()-2
(()+1,())←()
()←()+16位位移量
段内间接近调用:
执行操作:
()←()-2
(()+1,())←()
()←()
段间直接远调用:
执行操作:
()←()-2
(()+1,())←()
()←()-2
(()+1,())←()
()←偏移地址
()←段地址
段间间接远调用:
执行操作:
()←()-2
(()+1,())←()
()←()-2
(()+1,())←()
()←()
()←
(2)
返回指令
段内近返回:
执行操作:
()←(()+1,())
()←()+2
段内带立即数近返回:
段间远返回:
执行操作:
()←(()+1,())
()←()+2
()←(()+1,())
()←()+2
段间带立即数远返回:
过程定义伪操作
过程名()
过程名
(1)属性:
调用程序和子程序在同一代码段中(段内调用)
(2)属性:
调用程序和子程序不在同一代码段中(段间调用)
子程序调用与返回
子程序调用:
隐含使用堆栈保存返回地址
(1)保存返回地址
(2)转子程序
(1)保存返回地址
(2)转子程序
子程序返回:
保存与恢复寄存器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 知识点