汇编13章.docx
- 文档编号:14556723
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:10
- 大小:19.79KB
汇编13章.docx
《汇编13章.docx》由会员分享,可在线阅读,更多相关《汇编13章.docx(10页珍藏版)》请在冰点文库上搜索。
汇编13章
第1章汇编语言基础知识
汇编语言与高级语言的区别:
汇编语言是一种采用助记符表示相应机器指令的操作码和操作数,按照一定的格式书写的一种面向机器的程序设计语言。
汇编语言指令与机器指令基本上是一一对应的,其指令只有经过翻译程序(称之为汇编程序翻译后才能变成机器指令。
高级语言是一种与具体的计算机硬件无关、独立于机器的通用语言.高级语言采用接近自然语言的词汇,其程序的通用性强,易学易用,高级语言也要翻译成机器语言才能在机器上执行,它有两种翻译方式:
编译方式:
先把高级语言程序翻译成机器语言程序,然后在机器上执行。
解释方式:
直接把高级语言程序在机器上运行,一边解释一边执行
汇编语言的特点:
1与机器关系密切2效率高3特殊的使用场合
数制转换
(1十进制数转换成非十进制数规则:
将十进制数除以基数取余,直到商为0为止,最后从下往上取余数,即得到相应的非十进制数。
【例1-1】将十进制数107转换为二进制数、八进制数和十六进制数。
解:
(10710=(K6K5K4K3K2K1K02=(11010112
(2非十进制数转换成十进制数规则:
将非十进制数加权展开写成如下的形式:
然后按十进制的运算规则进行相加,就得到相应的十进制数。
(3二进制转换为八进制、十六进制规则:
二进制数转换为八进制数可将二进制数自右向左每三位一组,转换为十六进制数可按四位一组分组,不够三位或四位用0补齐,每一组用对应八进制数或十六进制数相应的计数符号表示。
(4八进制、十六进制转换为二进制规则:
八进制数转换成二进制数,从左到右只需将八进制数的1位用三位对应的二进制数表示即可。
十六进制数转换成二进制数时,从左到右只需将十六进制数的1位用四位对应的二进制数表示即可。
三种编码的表示与转化
注:
了解机器中为什么要使用补码来表示
1:
0有唯一表示2:
便于加减运算
逻辑运算符:
逻辑非NOT逻辑与AND逻辑或OR逻辑异或XOR
注意课后习题搞明白就行了
第二章计算机内部结构与寻址方式
80X86CPU由三部分组成:
运算器,控制器和寄存器,这三大部件有系统总线(AB,数据总线(DB和控制总线(CB连成一个整体。
执行部件EU
寄存器组:
数据寄存器组【16位】AX累加器,存放操作数或运算中间结果
BX,基地址寄存器,用于在计算存储器地址是存放操作数的偏移地址
CX,计数寄存器,用于在移位指令,循环指令和串操作指令作为计数控制
DX数据寄存器,做双字长运算时DX负责存放高位字,外设输入输出时,DX负责存放端口地址。
【8位】AH,AL,BH,BL,CH,CL,DH,DL
地址寄存器组SIDIBPSP(作用P15
注:
SP是专用的寄存器,不能作为数据寄存器使用。
标志寄存器OF,DF,IF,TF,SF,ZF,AF,PF,CF
作用:
符号标志SF:
结果为正SF=0,反之SF=1
零标志ZF:
结果为0,ZF=1,反之ZF=0
溢出标志OF:
若结果溢出,OF=1,反之OF=0
附加:
判断溢出的方法,两个符号相同的数据相加(含两个符号不同的数据相减若结果与原数据符号不同则溢出,其他情况则不会溢出
进位标志CF:
运算产生进位或者借位时CF=1,反之CF=0
段寄存器组:
CS,代码段DS数据段SS堆栈段ES附加段(注:
表2-1
存储器组:
8086CPU地址总宽度为20位,而2^20=1MB,任一存储单元的地址在00000H到0FFFFFH之间
逻辑地址和物理地址
物理地址PA=段地址SA*16+偏移地址EA
注:
若段地址是16进制,则乘以10
CS:
IP指CPU下一个段运行的指令是什么DS:
EA存取数据段中的数据SS:
SP操作堆栈顶的地址ES:
EA存取附加段的数据堆栈
1、特点“先进后出”或者“后进先出”的操作原则
取数据时从低地址到高地址方向,存储数据时从高地址到低地址方向,SP作为指针,内容有堆栈段寄存器SS给出,SP的内容为栈顶相对于SS的偏移地址,空栈时,SP指向栈底*(画图下高上低
PUSH入栈指令,先移动指针,后存数,将高字节存放在高地址中,低字节存放在低地址中POP出栈指,将栈顶元素弹出至某一寄存器,段寄存器(除CS或存储器中(令详见例2-3寻址方式(不会判断是什么样的寻址方式,而是计算执行结果(注:
例2-5至2-14立即数寻址的作用:
给“寄存器”或“存储单元”赋值。
小注:
立即数只能作为“源操作数”,它不能作为“目的操作数”。
立即数不能送往段寄存器。
1操作数:
存放在CPU内部寄存器中
指令直接指出寄存器的名字。
操作数寄存器
16位8种通用寄存器
8位4种数据寄存器
寄存器寻址方式的作用:
操作数直接存放在寄存器R中。
(用于CPU内部操作
包括:
直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、寄存器变址寻址方式、基址变址相对寻址方式
注:
寄存器包含于CPU,它不在内存中。
第三章汇编语言程序格式
[标号:
]指令助记符[操作数][;注释]
标号后的冒号是分隔符,注释引导符分号也是分隔符
注意汇编语言对于标识符有完整的规定
可用符号包括数字,字母和特殊符号?
$@_
数字不能作为名字的第一个符号
名字的长度不能超过31个字符
汇编语言中有特含义的保留字,如操作码,寄存器名等不能作为名字使用。
不区分字母的大小写
段定义伪指令
数据段
DATASEGMENT
BUFDB10H,20H
DATAENDS
堆栈段
STACKSEGMENT
DB100DUP(0
STACKENDS
代码段
CODESEGMENT
…..
CODEENDS
由于每个逻辑段最大不超过64KB,且可有多个逻辑段,但同时最多只允许四个逻辑段有效,即一个代码段,一个数据段,一个附加段,和一个堆栈段。
ASSUME指令:
指示汇编程序当前正使用的各段名字,告诉程序用SEGMENT伪操作顶帝国的段地址将要放在哪个段寄存器之中
数据定义
DB字节一个数据项占用一个字节
DW字一个数据项占用2个字节
DD双字一个数据项占用4个字节
DQ四字一个数据项占用8个字节
DT五字一个数据项占用10个字节
遵循“高字节放在高地址中,低字节放在低地址中”的存储原则
操作数是常量表达式——例3-1操作数是字符串——例3-2操作数是不定数——例3-3符号定义伪指令
EQU等值伪指令,给表达式定义一个等价的符号
“=”等号伪指令,给符号名定义一个表达式
标号(后边一定要加冒号只在代码段中定义和引用,代表指令的符号地址
与地址有关的伪指令
地址计数器$,即汇编程序当前的工作位置,例3-4
定位伪指令ORG,汇编程序到该伪指令语句后,使地址计数器的值调整成数值表达式ORG$+8表示跳过八个字节存储区
一些常用的伪指令
类型定义伪指令(操作数类型必须非常明确
1操作数在寄存器中MOVAL,BL2操作数是变量
3操作数是立即数(1操作数本身没有类型MOVWORDPTR5[BX],50
(2已经定义类型,但是操作时需要当做另外一种类型参考例3-5解析常用DOS调用
1.带回显键盘输入(1号调用
MOVAH,1
INT21H
等待键盘输入一个字符并将输入字符的ASCII码存入AL中,同时将该字符送显示器显示。
2.显示输出(2号调用
MOVDL,待显示字符的ASCII码
MOVAH,2
INT21H
将DL中的字符送显示器显示。
3.显示字符串(9号调用
LEADX,字符串偏移地址
MOVAH,9
INT21H
4.键盘输入字符串(10号调用
LEADX,缓冲区首偏移地址
MOVAH,10
INT21H
第四章指令系统
①数据传输指令②算数运算指令③位操作指令
④串操作指令⑤程序控制指令⑥处理器控制指令
前提:
DST表示目的操作数,可以是通用寄存器,段寄存器,存储单元;SRC表示源操作数,可以是立即数,通用寄存器,段寄存器,存储单元
MOV
功能:
把源操作数送给目的操作数
语法:
MOV目的操作数,源操作数
格式:
MOVDST,SRC
注意:
源操作数与目的操作数类型必须匹配;通用寄存器与存储单元之间的数据传送时,传送数据由用用寄存器来定;目的操作数不能为寄存器CS,IP和立即数;不允许两个存储单元之间传送数据也不能两个段寄存器之间进行直接数据传送,可以用寄存器作为桥梁;不能将一个立即数直接送到段寄存器中,立即数送到存储单元时,若存储单元的类型不确定是,用BYTEPTR或WORDPTR出行来定存储单元的类型。
XCHG
功能:
交换两个操作数的数据
格式:
XCHGOPR1,OPR2
PUSH,POP
功能:
把操作数压入或取出堆栈
语法:
PUSH操作数POP操作数
PUSHF,POPF,PUSHA,POPA
功能:
堆栈指令群
格式:
PUSHFPOPFPUSHAPOPA
LEA,LDS,LES
功能:
取地址至寄存器
语法:
LEAr,mLDSr,mLESr,m
XLAT(XLATB
功能:
将以(bx为首址,(AL为偏移量的字节存储单元中的内容传送给AL
语法:
XLATXLATm
算数运算指令
ADD,ADC
功能:
加法指令
语法:
ADDOP1,OP2ADCOP1,OP2
影响标志:
C,P,A,Z,S,O
SUB,SBB
功能:
减法指令
语法:
SUBOP1,OP2SBBOP1,OP2
影响标志:
C,P,A,Z,S,O
INC,DEC
功能:
把OP的值加一或减一
语法:
INCOPDECOP
影响标志:
P,A,Z,S,O
CMP
功能:
比较OP1与OP2的值
标志位:
C,P,A,Z,O
NEG
功能:
将OP的符号反相(取二进制补码
语法:
NEGOP
影响标志:
C,P,A,Z,S,O
MUL,IMUL
功能:
乘法指令
语法:
MULOPIMULOP
影响标志:
C,P,A,Z,S,O(仅IMUL会影响S标志
DIV,IDIV
功能:
除法指令
语法:
DIVOPIDIVOP
DAA,DAS
功能:
压缩BCD码调整指令
语法DAADAS
影响标志:
C,P,A,Z,S
位运算指令集
AND,OR,XOR,NOT,TEST
功能:
执行BIT与BIT之间的逻辑运算
影响标志:
C,O,P,Z,S(其中C与O两个标志会被设为0NOT指令不影响任何标志位SHR,SHL,SAR,SAL
功能:
移位指令
影响标志:
C,P,Z,S,O
ROR,ROL,RCR,RCL
功能:
循环移位指令
影响标志:
C,P,Z,S,O
算术指令:
用来执行算术运算。
算术指令类型指令说明
加法指令ADD(加法、ADC(带进位加法、INC(加1
减法指令SUB(减法、SBB(带借位减法、DEC(减1、NEG(求补、CMP(比较
乘法指令MUL(无符号数乘法)、IMUL(带符号数乘法)除法指令DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)逻辑指令:
对字或字节执行逻辑运算。
逻辑指令类型指令说明逻辑运算指令AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)移动指令SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 13