汇编教程课件上.docx
- 文档编号:10733783
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:86
- 大小:48.78KB
汇编教程课件上.docx
《汇编教程课件上.docx》由会员分享,可在线阅读,更多相关《汇编教程课件上.docx(86页珍藏版)》请在冰豆网上搜索。
汇编教程课件上
引言:
●关于本书
●我们要学习本书中的哪些内容?
●时间安排
●平时成绩计算方法
目录
第一章基础知识
1.1汇编语言简介
1.1.1什么是汇编语言
1.1.2为什么要学习汇编语言
1.2计算机中数据的表示
1.3计算机组织
1.3.1计算机系统概述
1.3.2中央处理机CPU
1.3.3寄存器组
1.3.4存储器
1.3.5外部设备
第二章汇编语言程序实例及上机操作
2.1汇编语言程序实例
2.2工作环境及上机操作
2.3DEBUG主要命令
2.4常用的DOS命令
2.5几个常用的DOS系统功能调用(INT21H)
第三章指令系统和寻址方式
3.1寻址方式
3.2指令系统
第四章汇编语言程序格式
4.1汇编程序功能
4.2伪操作
4.3程序格式
4.4汇编语言上机
第五章分支与循环程序设计
5.1分支程序设计
5.2循环程序设计
第六章子程序
6.1子程序的结构
6.2子程序的参数传递
6.3模块化程序设计
6.4子程序的嵌套与递归
6.5子程序举例
第七章高级汇编语言技术
7.1宏汇编
7.2重复汇编
7.3条件汇编
第一章基础知识
1.1汇编语言简介
1.1.1什么是汇编语言
机器语言汇编语言高级语言
1.1.2为什么要学习汇编语言
A汇编语言程序是用符号指令写成的,本质上是机器语言。
与具体机器的机型的硬件密切相关,可以直接有效地控制计算机硬件,程序运行速度快,程序短小精悍,占用内存少,在某些特殊应用场合更能发挥作用。
如:
智能化仪表家用电器实时控制系统单片机控制病毒研究等
B使用汇编语言能从根本上认识和理解计算机的工作过程,它可直接而精确地控制计算机硬件的操作。
C学习汇编语言对从事计算机的研究和开发有着重要的意义。
所以,它作为一门计算机专业基础课,并对计算机专业今后课程的学习是非常重要的。
1.2计算机中数据的表示
1.2.1不同进位计数制及其相互转换
1、二进制
十进制数:
123.6(D)=1×102+2×101+3×100+6×10-1
各位权值10k
二进制数:
101101(B)=1×25+1×23+1×22+1×20=45(D)
各位权值2k
十六进制数:
5F(H)=5×161+15×160(D)
各位权值16k
1.2.2二进制数、十进制数和十六进制数转换
(1)二进制数转换为十进制数(按权展开)
1101.1(B)=23+22+20+2-1=8+4+1+0.5=13.5(D)
(2)十进制数转换为二进制数
.降幂法:
(适用于数值不大的数)
13.5(d)=8+4+1+0.5=1101.1
1000
0100
0001
+0.1
1101.1
★对于小数有:
例1.2:
N=0.8125D(降幂法)
2-12-22-32-4
0.50.250.1250.0625
计算过程:
0.8125-0.5=0.3125(b1=1)
0.3125-0.25=0.0625(b2=1)
0.0625-0.125<0(b3=0)
0.0625-0.0625=0(b4=1)
N=0.8125D=0.1101B
例1.4:
N=0.8125D(乘2取整法)
0.8125×21.625
0.625×21.25
0.25×20.5
0.5×21.0
1.8125D=0.1101B
★对于整数有:
除法:
(除2取余法,对整数而言)
N=13除2即二进制数去掉最右一位
13/2=6余1(余1表明N是奇数,得到一位)
6/2=3余0商为6即可写出110
3/2=1余1
1/2=0余1
13(d)=1101(b)
1011B=11D
1101B=13D
1.1.3十六进制数与二进制数和十进制数转换
(1)十六进制数与二进制数转换
每四位二进制数表示一位十六进制数
例:
001101011011111135BF
即0011010110111111(B)=35BF(H)
(2)十六进制数与十进制数转换
方法同二进制数与十进制数转换,不过是基数为十六进制数所对应的权。
例:
35BF(H)=0011010110111111(B)
(3)常见几种进制数码表
二进制
八进制
十进制
十六进制
0000
0
0
0
0001
1
1
1
0010
2
2
2
0011
3
3
3
0100
4
4
4
0101
5
5
5
0110
6
6
6
0111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
1.2.2二进制数和十六进制数运算
1.2.2.1二进制运算
加法规则:
0+0=01+0=10+1=11+1=0(进位1)
乘法规则:
0×0=01×0=00×1=01×1=1
1.2.2十六进制数运算
原则:
逢十六进一
43A55A342A34
+5A34-34A5×0025
9DD9258FD304
+5468
61984
1.3计算机中数和字符的表示
1.3.1数的补码表示
定义:
(X>=0时)[X]补=符号+|X|------
(1)
(X<0时)[X]补=2n-|X|=(2n-1-|X|)+1---
(2)
|X|=2n-[X]补=(2n-1-[X]补)+1(X<0)---(3)
(2)+(3)即X<0时:
[X]补+|X|=2^n
数的补码具体操作是:
反码+1,符号扩展
1.3.2补码的加减法(见教材P6-7)
由上面式
(2),(3)得到式(4):
[X]补求补[-X]补求补[X]补---(4)
[X+Y]补=[X]补+[Y]补--(5)
[X-Y]补=[X]补+[-Y]补--(6)
(6)式的Y<0时即为(5)式,仅需考察(6)式且可认为X>0,Y>0:
1)如果[X-Y]>=0,由定义应有[X-Y]补=X-Y,
则(6)式右边=X+(2^n-Y)=X-Y+2^n=X-Y(2^n为多余)
2)如果[X-Y]<0,(或者说Y>X),
应有[X-Y]补=2^n-|X-Y|=2^n-(Y-X)=2^n-Y+X=[-Y]补+[X]补
(computer)
1.3.3无符号数
1.3.4字符表示
见教材P:
8表1.1“ASCII码”
*2A+2B-2D
/2FLF0ACROD
1.4几种基本逻辑运算
AND,OR,NOT,XOR
A
B
AND
OR
NOTA
XOR
0
0
0
0
1
0
0
1
0
1
1
1
1
0
0
1
0
1
1
1
1
1
0
0
1.3计算机组织
2.1计算机系统概述
硬件:
存储器
大容量
存储器
接口
总线控制
逻辑
中央处理机CPU
……
I/O设备
接口
计算机结构
.中央处理机CPU
.存储器memory
RAM(RandomAcceseMemory),ROM(ReadOnly),
EPROM(写几百~几千次),闪存(一种高速EPROM,可写几千次)
.输入输出子系统I/O
系统总线:
数据线,地址线,控制线
CPU的发展:
8088(准16位机)
8086:
16位机,16位通用寄存器,20位地址线,1M寻址.
80286(准32位机)
80386:
32位机,32位通用寄存器,32位地址线,4G寻址(理论).
80486
80586:
1993,字长32位,主频60-166M,数据总线64,地址总线32,寻址4G
80686(PRO)
PⅡ:
1997,字长32位,主频-333M,数据总线64,地址总线32,寻址4G
PⅢ:
1999,字长32位,主频-600M,数据总线64,地址总线36,寻址64G
PⅣ:
软件:
系统软件
应用软件
操作系统
系常驻监督程序
统
软
件文I/O调文翻连装系
件驱试本译接入统
管动程编程程程程
理程序辑序序序序
程序程库
序序
用
户
软用户程序用户程序库
件
****************************************************************************************************
2.2中央处理机CPU
2.2.1CPU的组成
算术逻辑部件、控制逻辑、工作寄存器
2.2.280X86寄存器组
寄存器分为可见和不可见311615870
///////////////////////
AH
AL
///////////////////////
BH
BL
///////////////////////
CH
CL
///////////////////////
DH
DL
///////////////////////
SP
///////////////////////
BP
///////////////////////
DI
///////////////////////
SI
1、.通用数据寄存器EAX
AX=AHAL累加器EBX
BX=BHBL基址变址ECX
CX=CHCL计数EDX
DX=DHDL数据
.指针及变址寄存器
SP堆栈指针
BP基址指针
DI目的变址(自动增1/减1)
SI源变址(自动增1/减1)
2、专用寄存器
///////////////////////
IP
///////////////////////
FLAGS
IP指令指针
FLAGS标志
SP堆栈指针
标志寄存器FLAGS
1514131211109876543210
NT
IO
PL
OF
DF
IF
TF
SF
ZF
AF
PF
CF
.程序状态字寄存器
PSW
表2.1PSW标志位的符号表示
标志名
flag=1
flag=0
OF溢出(是/否)
OV
NV
第四章DF方向(增/减)
DN
UP
第四章IF中断(允许/关闭)
EI
DI
第四章SF符号(负/正)
NG
PL
ZF零(是/否)
ZR
NZ
AF辅助进位(是/否)
AC
NA
PF奇偶(偶/奇)
PE
PO
CF进位(是/否)
CY
NC
3、段寄存器
CS
DS
ES
SS
////////FS///////
////////GS////////
CS代码
DS数据
ES附加
SS堆栈
.?
段寄存器是16位寄存器,用什么
办法提供20位地址.
220=1KK=1M(兆)
段寄存器主要用于存储器寻址,用来直接或间接地存放段地址。
是解决1M地址的寻址问题。
*8088/8086只能工作在实模式(实模式寻址1M)
150存储器
段地址
0000
所选存储单元
段地址
偏移地址
偏移地址
+
*除段寄存器外,286以上,还可见32位,前加E,如EAX,ESP,EDI。
☆
2.3存储器
。
存储器分内存和外存,这里指内存,外存指硬盘等。
。
存储器按作用分:
RAM,ROM(C000~FFFF),Cache(缓冲CPU与
低速的RAM)
2.3.1存储单元的地址和内容
位、字节、字
BIT:
0/1
BYTE:
8BIT
7
6
5
4
3
2
1
0
WORD:
2BYTE
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
单字、双字、四字
70
(1)字节
N地址
158
70
(2)字N+1N地址
31高位字16
15低位字0
(3)双字N+3N+2N+1N地址
63高位双字32
31低位双字0
(4)四字N+7N+6N+5N+4N+3N+2N+1N地址
.存储单元以字节为最基本单位存储信息.
.存储单元的地址从0开始编号,机器中地址以二进制数表示,无符号数,书写用十六进制.
.?
字长16位表示地址,可表示多少字节单元.
210=1024=1K
216=65536=64K0---65535
地址编号十六进制:
0---FFFFH
220=1KK=1M(兆)
.一个存储单元中存放的信息称为该存储单元的内容。
(0004)=78H字节单元
(0005)=56H字节单元
(0004)=5678H字单元,高位在高地址。
(0004)=12345678H双字单元,高位在高地址。
地址
低址
内容
0004H
78H
0005H
56H
0006H
34H
0007H
12H
2.3.2实模式存储器寻址
.?
用什么办法提供20位地址.
220=1KK=1M(兆)
16位段地址0000
000016位偏移地址
20位物理地址
16dx段地址+偏移地址=物理地址
代码段CS
数据段DS
堆栈段SS
附加段ES
*8088/8086只能工作在实模式(实模式寻址1M),其他可实模式/保护模式。
保护模式:
支持多任务处理,扩大寻址范围。
支持虚拟存储(把外存看作内存),
程序员编程无内存限制。
15,031,0内存
单元
偏移地址
选择器
所选段最大
4GB
+
地址转换
段基地址物理地址
选择器放在段寄存器中,但不直接表示段基地址,由操作系统完成转换。
2.4外部设备
.主机通过I/O接口与外设交换数据的。
每个I/O
接口电路中都有如下
三个寄存器:
数据寄存器
状态寄存器
命令寄存器
.端口PORT16位二进制代码0000--FFFFH
.通过调用例行程序进行
BIOSBasicInput/OutputSystem
(存在ROM中)
DOSDiskOperatingSystem
(存在磁盘中,完成比BIOS更高的功能)
☆
第二章汇编语言程序实例及上机操作
2.1汇编语言程序实例
例2.1编写从键盘输入单个字符,并将该字符的下一个字符显示输出的程序。
codesegment
assumecs:
code
start:
movah,1
int21h
movdl,al
adddl,1
movah,2
int21h
movah,4ch
int21h
codeends
endstart
键入A接着显示B,键入K接着显示L
例2.2编写显示“HELLO,WORLD!
”的程序。
datasegment
Stringdb‘HELLO,WORLD!
$’
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetstring
movah,9
int21h
movah,4ch
int21h
codeends
endstart
显示HELLO,WORLD!
详见教材P31表2.1
2.2建立汇编语言的工作环境
2.2.1为运行汇编语言程序至少要在磁盘上建立以下文件:
1、编辑程序EDIT.EXE
2、汇编程序MASM.EXE
3、连接程序LINK.EXE
4、调试程序DEBUG.EXE
必要时还需建立CREF.EXE等文件
2.2.2建立ASM文件
在DOS的提示符下,输入EXE文件的文件名。
如:
C>EDIT↓
C>EDIT文件名.ASM↓例如文件名为LI21.ASM
C>
在EDIT程序中,将我们编写的汇编程序输入到计算机中,并将LI21.ASM保存ASM源程序。
然后退出EDIT程序,回到DOS状态。
2.2.3用MASM程序产生OBJ文件
源程序建立后,就要用汇编程序对源文件汇编,汇编后产生二进制的目标文件(OBJ文件),其操作与汇编程序回答如下:
C>MASMLI21.ASM↓
Microsoft(R)MacroAssmblerVersion6.0
Copyright(C)MicrosoftCorp1981-1985,1987,Allrightsreserved
Objectfilename[LI21.OBJ]:
↓
Sourcelisting[NUL.LST]:
LI21
Cross-reference[NUL.CRF]:
LI21
51646+447778Bytessymbolspacefree
0WarningErrors
0SevereErrors
li21.OBJ目标文件,这是汇编的主要目的
li21.LST列表文件,可有可无
li21.CRF交叉引用表,可有可无
0WarningErrors警告错误宏指令
0SevereErrors严重错误
2.2.4用LINK程序产生EXE文件
汇编程序已产生出二进制的目标文件(OBJ),但OBJ文件并不是执行文件,还必须用连接程序(LINK)把OBJ文件转换为可执行的EXE文件。
当然,如果一程序由多个模块组成时,也应该通过LINK把它们连接在一起。
操作如下:
C>LINKLI21.OBJ↓
Microsoft(R)MacroAssmblerVersion5.0
Copyright(C)MicrosoftCorp1981-1985,1987,Allrightsreserved
Runfile[LI21.ASM.EXE]:
↓
ListFile[NUL.MAP]:
ex_movs
Libraries[.LIB]:
LINK:
WarningL4012:
nostacksegment
两个输入文件两个输出文件
OBJ文件EXE文件
LIB文件MAP文件
2.2.5运行程序或称程序的执行
在建立了EXE文件后,就可以直接在DOS的提示符下,输入EXE文件的文件名。
如:
C>LI21↓
C>
2.2.6介绍COM文件
COM文件也是一种可执行的程序。
EXE文件也是一种可执行的程序。
2.3DEBUG主要命令
C>DEBUG↓
–
C>DEBUG<要调试的程序>↓
–
DEBUG的主要命令
-D显示内存内容
格式1:
D地址
从指定的地址开始,显示40H字或80H字节
格式2:
D范围
显示指定范围的内容
-E修改内存单元内容
格式1:
E地址内容表
用给定的内容表去代替指定范围的内存单元的内容
格式2:
E地址
可连续逐个修改内存单元的内容。
按CR键结束E命令
-R检查和修改寄存器内容
格式1:
R
将显示所有寄存器内容和全部标志的状态,
现行的CS:
IP所指的指令的机器码和反汇编符号
格式2:
R寄存器名
可检查和修改寄存器内容,若不修改其内容,则按CR键;若要修改,可输入修改后的1~4个16进制字符值,再按CR键。
格式3:
RF
显示标志和修改标志位状态。
-G运行命令
格式:
G[=地址][地址]…[地址]
该命令还可以在程序运行中设置断点。
1、第一个参数“=地址”规定了执行的起始地址,
2、以CS内容作段地址,以等号后面的地址值作为地址偏移量,
3、=不能省掉。
若省掉起始地址,则以CS:
IP作为起始地址。
4、后面的地址数是断点地址,最多可设置10个断点.
5、地址参数所指的单元,必须包含有有效的8088指令
6、堆栈必须至少包含有6个可用字节。
7、若断点地址只包含地址偏移量,则段地址在段寄存器CS中。
-T跟踪命令
格式1:
T[=地址]
可以在指令执行中逐条进行跟踪,若省去地址,则从CS:
IP现行值执行。
格式2:
T[=地址][值]
可对多条指令进行跟踪(在执行了由值所指定的若干条指令后,执行就停下来,并显示各寄存器的内容和标志位状态)。
-A汇编命令(输入程序)
若在调试目标程序的过程中,要改写或增补一段目标程序,则可以用A命令直接在DEBUG下实现。
格式:
A[地址]
该命令可以从指定的地址开始,将输入的汇编语言语句汇编成机器代码,连续存放在内存单元中。
若命令中未指定地址,且前面用过汇编命令A的话,则接着上一个汇编命令的最后一个单元开始存放;若前面未用过汇编命令,则从CS:
0100H单元开始存放。
在程序完毕后,最后一行不输入内容,直接按回车CR,即可返回到DEBUG程序。
并可用反汇编命令U验证输入的程序是否正确。
-U反汇编命令
格式1:
U地址
该命令从指定的地址开始,反汇编16个字节或32个字节,若省去指定地址,则以上一个U命令反汇编的最后一条指令的地址的下一个单元作为起始地址;若没用过U命令,则以由DEBUG初始化的段寄存器值作为段地址,以100H作为地址偏移量。
格式2:
U范围
对指定范围的内存单元进行反汇编,范围可以由起始地址、结束地址或起始地址及长度来确定。
-I输入命令
格式:
I端口地址
该命令从指定的端口输入一个字节并显示。
-O输出命令
格式:
O端口地址字节值
该命令能向指定的端口输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 教程 课件