汇编语言课件.docx

上传人:b****7 文档编号:9892391 上传时间:2023-02-07 格式:DOCX 页数:72 大小:272.96KB
下载 相关 举报
汇编语言课件.docx_第1页
第1页 / 共72页
汇编语言课件.docx_第2页
第2页 / 共72页
汇编语言课件.docx_第3页
第3页 / 共72页
汇编语言课件.docx_第4页
第4页 / 共72页
汇编语言课件.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

汇编语言课件.docx

《汇编语言课件.docx》由会员分享,可在线阅读,更多相关《汇编语言课件.docx(72页珍藏版)》请在冰豆网上搜索。

汇编语言课件.docx

汇编语言课件

汇编语言的特点:

Ø面向机器的低级语言,通常是为特定的计算机或计算机系列专门设计的。

Ø保持了机器语言的优点,具有直接和简捷的特点。

Ø可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

Ø目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。

Ø经常与高级语言配合使用,应用十分广泛。

第一章基础知识

教学目的和要求:

Ø熟练掌握进位计数制和各种进位计数制之间的数制转换

Ø掌握计算机中数和字符的表示方法

教学重点:

Ø二进制数和十六进制数运算

教学难点:

Ø十六进制数的运算

1.1进位计数制与不同基数的数之间的转换

1.1.1二进制数转换为十进制数

方法:

按权展开

例如:

1010110.1011B=26+24+21+2-1+2-3+2-4

1.1.2十进制转换为二进制数

方法:

整数部分:

除基取余,自底向上

小数部分:

乘基取整,自顶向下

例如:

N=130D,求其对应的二进制数

130D=10000010B

1.1.3十六进制数及其与二进制、十进制之间的转换

1.十六进制数←→二进制数

例如:

3B2H=10110110010B

1001001101B=24DH

2.十六进制数←→十进制数

3B2H=3×162+11×161+2×160

23D=17H

1.2二进制数和十六进制数的运算

1.2.1二进制数运算

逢二进一借一为二

加法规则乘法规则

0+0=000=0

0+1=101=0

1+0=110=0

1+1=0(进位1)11=1

1.2.2十六进制数运算

1.加法和减法

逢十六进一借一为十六

2.乘法

化为十进制数,求得结果后再化为十六进制数

1.3计算机中数和字符的表示

1.3.1数的补码表示

规则:

正数的补码等于原码

负数的补码等于其绝对值的原码各位取反然后末位加一

如:

-36D,机器字长为16位,求其补码

36的原码为0000000000100100

按位取反:

111111*********1

末位加一:

111111*********0

1.3.2补码的加法和减法

加法规则:

[X+Y]补码=[X]补码+[Y]补码

减法规则:

[X-Y]补码=[X]补码+[-Y]补码

例如:

机器字长为8,求[32-17]补,[32+6]补

[32-17]补:

00100000

+11101111

=00001111

[32+6]补:

00100000

+00000110

=00100110

注:

补码减法可转换为补码加法

进位和溢出

进位:

由于运算结果超出了位数,最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。

溢出:

表示结果超出了字长允许表示的范围,一般会造成结果出错。

1.3.3无符号数

1.3.4字符表示法

ASCII码:

用一个字节来表示一个字符,低7位为字符的ASCII值,最高位一般用作校验位。

1.4几种基本的逻辑运算

第二章80x86计算机组织

教学目的和要求:

Ø熟练掌握中央处理器的组成,以及存储器的寻址方式等。

教学重点:

ØCPU的组成、8086寄存器组、以及实模式存储器寻址

教学难点:

Ø8086寄存器组、实模式存储器寻址

2.180x86微处理器

由80386微处理器芯片构成的微机称为386微机,由80486微处理器芯片构成的微机称为486微机,P15表2.1反映出从8086~PentiumII的一些主要技术参数,大家可通过它了解一下CPU的发展历程。

2.2基于微处理器的计算机系统构成

2.2.1硬件

运算器:

所有算术与逻辑运算

控制器:

全机控制工作,从存储器中取出指令,经译码分析后向全机发出取数、执行、存数等控制指令。

存储器:

计算机的记忆部件

I/O设备:

负责与外界通信的输入、输出设备,如显示器、键盘等

大容量存储器:

可存储大量信息的外部存储器,如磁盘、光盘等

数据线:

传送信息

地址线:

指出信息来源和目的地

控制线:

规定总线的动作

注:

系统总线的工作由总线控制逻辑指挥

2.2.2软件

软件系统包括:

系统软件和应用软件。

2.3中央处理机

2.3.1中央处理器CPU的组成

算术逻辑部件

控制逻辑

工作寄存器

386后出现了高速缓冲存储器

 

2.3.280x86寄存器组

寄存器是运算器中的存储单元。

分为:

程序可见的寄存器(在汇编语言程序设计中用到的寄存器)

程序不可见的寄存器(程序设计不可用,由系统调用的)

程序可见的寄存器包括:

通用寄存器,专用寄存器,段寄存器

1、通用寄存器

(1)数据寄存器(AX、BX、CX、DX)

用来暂时存放计算过程中所用到的操作数、结果或其它信息,可以以字(16位)也可以以字节(8位)的形式访问。

以AX为例:

(2)指针(或变址)寄存器(SP、BP、SI、DI)

运算过程中存放操作数,只能以字(16位)为单位使用;存储器寻址时,提供偏移地址。

ØSP(堆栈指针寄存器)

用来指示段顶的偏移地址;

ØBP(基址指针寄存器)

可作为堆栈区中的某一个基地址,与堆栈段寄存器SS联用来确定堆栈段中的某一存储单元的地址;

ØSI(源变址寄存器)和DI(目的变址寄存器)

一般用来确定数据段中某一存储单元的地址。

2、专用寄存器(IP、SP、FLAGS)

ØIP(指令指针寄存器)

存放代码段CS中的偏移地址。

在程序运行的过程中,始终指向下一条指令的首地址,与代码段CS联用来确定下一条指令的物理地址。

ØSP(堆栈指针寄存器)

与堆栈段寄存器SS联用来确定堆栈段中栈顶的地址,即存放栈顶的偏移地址。

ØFLAGS(标志寄存器/程序状态寄存器PSW)

包括条件码标志、控制标志、系统标志,可按位操作。

图2.480X86的标志寄存器

(1)条件码标志位

记录程序中运行结果的状态信息,根据有关指令的运行结果由CPU自动设置,用作后续条件转移指令的转移控制条件。

①溢出标志(OF)

在运算过程中,如操作数超出了机器能表示的范围称为溢出。

此时OF置1,否则置0。

②符号标志(SF)

记录运算结果的符号,负时置1,否则置0。

③零标志(ZF)

运算结果为0时置1,否则置0。

④进位标志(CF)

最高有效位有进位时置1,否则置0。

⑤辅助进位标志(AF)

记录运算时第3位产生的进位值,有进位时置1,否则置0。

⑥奇偶标志(PF)

用来为机器中传送信息时可能产生的代码出错情况提供检验条件。

当结果操作数中1的个数为偶数时置1,否则置0。

(2)控制标志位

①方向标志(DF)

在串处理指令中控制处理信息的方向。

当DF为1时,每次操作后使变址寄存器SI和DI减小,串处理从高地址向低地址方向处理。

当DF为0时,每次操作后使变址寄存器SI和DI增大,串处理从低地址向高地址方向处理。

(3)系统标志位

用于I/O、中断屏蔽、程序调试、任务切换和系统工作方式等的控制。

一般应用程序不必关心这些位,只有系统程序员或需要编制低层I/O设备控制等程序时才需要。

①陷阱标志(TF)

用于调试时的单步方式操作。

TF为1时,每条指令执行完后产生陷阱,由系统控制计算机;TF为0时,CPU正常工作,不产生陷阱。

②中断标志(IF)

当IF为1时,允许CPU响应可屏蔽中断请求,否则关闭中断。

(第八章)

③I/O特权级(IOPL)

在保护模式下,用于控制对I/O地址空间的访问。

(第八章)

(4)标志位的符号表示

表2-1标志位的符号表示

标志名

标志为1

标志为0

OF溢出(是/否)

DF方向(减量/增量

IF中断(允许/关闭)

SF符号(负/正)

ZF零(是/否)

AF辅助进位(是/否)

PF奇偶(偶/奇)

CF进位(是/否)

OV

DN

EI

NG

ZR

AC

PE

CY

NV

UP

DI

PL

NZ

NA

PO

NC

3.段寄存器(放在2.4.2中讲解)

段寄存器:

用于存放段地址的寄存器。

8086/8088,80286中的段寄存器包括:

代码段寄存器:

CS

数据段寄存器:

DS

堆栈段寄存器:

SS

附加段寄存器:

ES

80386以后增加了FS,GS,它们也是附加段寄存器。

2.4存储器

2.4.1存储单元的地址和内容

1.存储单元的地址

物理地址:

在存储器里以字节为单位存储信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址。

说明:

Ø地址从0开始编号,顺序地每次加1。

Ø在机器里,地址用无符号的二进制数表示,当常以无符号十六进制数做为书写格式。

思考:

地址总线分别为20位、24位、32位、36位时,可访问的单元地址范围。

2.存储单元的内容

Ø存储单元的内容:

一个存储单元中存放的信息,书写格式为:

(地址)=内容

例如:

(0004)=34H

Ø字数据存储时,低位字节存入低地址,高位字节存入高地址,这样两个字节单元构成一个字单元,字单元地址以它的低地址表示。

同理,双字数据存放在连续的4个存储单元内。

例如:

(0023H)=1234H

Ø同一地址既可以看作字节单元地址,也可以看作字单元地址或双字单元、四字单元地址。

Ø访问存储器时以字为单位进行,即机器以偶地址访问存储器,对于奇地址字单元需访问两次存储器。

Ø设X为某存储单元地址,则(X)表示该单元的内容,如果X的内容仍然为一个地址Y,则Y的内容表示为((X))。

例如:

(0004H)=1234H,(1234H)=231EH,则((0004H))=231EH。

2.4.2实模式存储器寻址

1.存储器地址的分段

为何要进行分段?

分段的目的:

解决16位字长的机器无法直接表示20位地址的问题。

机器规定:

从0地址开始,每16个字节为一小段。

如下:

00000,00001,00002,……,0000F;

00010,00011,00012,……,0001F;

………………;

FFFF0,FFFF1,FFFF2,……,FFFFF

分段方法:

对存储器分段时,段可以起始于任意小段的首地址,而不是任意地址,段的大小可以是1B~64KB的任意个字节。

物理地址:

在1M的存储器里,每个存储单元都有一个唯一的20位地址,称为该单元的物理地址。

段地址:

每一段的起始地址,由于该地址的最低4位为0,故只取高16位。

偏移地址:

段内相对于段起始地址的偏移量。

例如:

设段地址为1200H,则下图中内存单元内容为56H的存储单元偏移地址为0003H。

物理地址的计算方法:

物理地址=段地址×16+偏移地址

例如:

段地址为1234H,偏移地址为0002H,求其物理地址。

1234H×16+0002H=12342H

注:

每个存储单元都有唯一的物理地址,但可由不同的段地址和不同的偏移地址构成。

例如:

下列地址对应同一物理地址。

段地址为2000H,偏移地址为003DH

段地址为2003H,偏移地址为000DH

2.段寄存器

段寄存器:

专门存放段地址的寄存器。

包括:

(1)代码段CS:

存放当前正在运行的程序;

(2)数据段DS:

数据段存放当前运行程序所用的数据,如果程序中使用了串处理指令,则其源操作数也存放在数据段中;

(3)堆栈段SS:

堆栈段定义了堆栈的所在区域;

(4)附加段ES:

附加段是附加的数据段,它是一个辅助的数据区,也是串处理指令的目的操作数存放区;

在80386及其后继的80X86中新增段寄存器

(1)FS

(2)GS

2.4.3保护模式存储器寻址(略)

2.5外部设备

外部设备与主机(CPU和存储器)的通信通过外设接口进行,每个外设接口包括一组寄存器,一般有三种不同的用途:

①数据寄存器:

存放在外设和主机间传送的数据,起缓冲器的作用。

②状态寄存器:

保存外部设备或接口的状态信息,以便CPU了解和测试外设的工作情况。

③命令寄存器:

CPU给外设或接口的控制命令。

注:

Ø各种外部设备都有以上三种类型的寄存器,只是每个接口所配备的寄存器数量不同。

Ø外设中的每个寄存器都有一个端口(port)地址(端口号),组成了独立于内存的I/O地址空间。

第三章80x86的指令系统和寻址方式

教学目的和要求:

Ø熟练掌握8086的寻址方式

Ø熟练掌握8086的指令系统

教学重点:

Ø8086的指令系统和寻址方式

教学难点:

Ø寻址方式的理解,各指令的用法

指令系统的一般格式:

操作码操作数,操作数,……,操作数

一地址指令:

只有一个操作数

二地址指令:

有二个操作数,

常见格式为:

操作码目的操作数,原操作数

三地址指令:

有三个操作数

3.180x86的寻址方式

操作数可存放的位置:

Ø立即数

Ø寄存器中

Ø存储器中

3.1.1与数据有关的寻址方式

1、立即寻址方式

操作数直接存放在指令中。

如:

MOVAX,10A7H;源操作数的寻址方式为立即寻址

  MOVAL,87H

注:

常用来表示常数,只能用于源操作数,不能用于目的操作数。

2、寄存器寻址方式

操作数存放在CPU内部的寄存器中,指令指定寄存器号。

如:

MOVAX,BX

   INCCX

   ADDBL,7;目的操作数的寻址方式为寄存器寻址方式

注:

16位操作数,可用AX,BX,CX,DX,SP,BP,SI,DI

   8位操作数,可用AL,AH,BL,BH,CL,CH,DL,DH

(除了上述两种寻址方式外,其他的寻址方式中操作数均保存在存储器中,介绍之前先学习几个定义)

有效地址(EA:

EffectiveAddress):

即偏移地址

可由以下四部分组成:

位移量:

存放在指令中的一个8位,16位或32位的数或符号地址。

基址:

存放在基址寄存器中的内容。

(常用于指向数据段中数组或字符串的首地址)

变址:

存放在变址寄存器中的内容。

(常用于访问数据段中数组的某个元素或字符串的某个字符)

比例因子:

用于386及以后机型,可以是1,2,4,8,常用于访问数组。

8086~80286有效地址的组成部分:

位移量

8,16位

基址寄存器

BX,BP

变址寄存器

SI,DI

比例因子

有效地址的计算公式:

EA=基址+变址+位移量

386以后:

EA=基址+变址×比例因子+位移量

3、直接寻址方式

数据在存储器中,有效地址由指令直接给出。

EA=位移量

注:

有效地址就是偏移地址。

如:

MOVAX,[1008H]

则:

执行完后:

(AX)=1234H

注:

1.可用符号地址(类似于变量名)代替数值地址。

MOVAX,VALUE或者MOVAX,[VALUE]

2.有效地址直接给出,段地址默认为数据段。

若访问其他段的数据,需加段跨越前缀。

MOVAX,ES:

[1008H]

3.字数据存放在存储器中时,高地址存放在高字节,低地址存放在低字节。

4、寄存器间接寻址

基址寄存器:

BX,BP

变址寄存器:

SI,DI

操作数在存储器中,有效地址为基址寄存器或变址寄存器的内容。

即:

EA=基址/变址

如:

MOVAX,[BX]

设(DS)=3000H,(BX)=2000H,(32000H)=12H,(32001H)=34H

则:

EA=(BX)=2000H

物理地址=32000H

执行后:

(AX)=3412H

注:

当基址寄存器用BP时,默认段为SS,否则为DS。

该规则在以后的几种寻址方式中同样适用。

如:

MOVAX,[BP]

(DS)=3000H,(SS)=2000H,(BP)=2000H

则:

物理地址=22000H

5、寄存器相对寻址

EA=基址/变址+位移量

如:

(1)MOVAX,[BP+1000H]

(2)MOVAX,COUNT[BX]或MOVAX,[BX+COUNT]

COUNT为位移量。

如果(DS)=3000H,(SS)=2000H,(BP)=2000H,(BX)=3120H,COUNT=0040H

则:

(1)物理地址=23000H

(2)物理地址=33160h

6、基址变址寻址方式

EA=基址+变址

如:

MOVAX,[BX][SI]或MOVAX,[BX+SI]

7、相对基址变址寻址方式

EA=基址+变址+位移量

如:

MOVAX,COUNT[BX][DI]或MOVAX,[BX+DI+COUNT]

(注意:

教材43-44,8-10的寻址方式为386以后机型增加的寻址方式,在此不再介绍。

3.1.2与转移地址有关的寻址方式(略)

3.2程序占用的空间和执行的时间(略)

补充:

汇编语言的编写及调试运行过程

1、汇编语言源程序的基本格式

注:

Ø程序必须有代码段,而数据段、附加段、堆栈段只有必要时才有。

Ø用ASSUME将我们定义的各段与段寄存器相对应。

Ø在程序开始时,应将除代码段以外的其余各段的段地址赋给相应的段寄存器。

Ø程序结束时要有返回DOS的语句。

 

2、程序调试过程

1、编辑.ASM汇编语言源程序。

(在DOS下可用EDIT编写)

   EDITA.ASM

2、用MASM对源程序汇编,产生.OBJ的目标文件。

   MASMA.ASM或MASMA;

注:

如果提示有语法错误,则不产生.OBJ文件,此时我们要返回第1步修改源程序。

3、用LINK对.OBJ文件进行连接,产生.EXE的可执行文件。

   LINKA.OBJ或LINKA;

4、执行.EXE可执行文件,或者用DEBUG对.EXE文件进行调试。

   执行:

A

   调试:

DEBUGA.EXE

 

3、DEBUG常用指令简介

1、U(反汇编)命令

   格式:

U或U地址或U地址1地址2

   功能:

从代码段中指定地址进行反汇编

   常用方式:

       U     从上次结束的位置进行反汇编

       U地址 从指定地址开始进行反汇编

2、G(执行)命令

   格式:

G[=地址1][地址2]

   功能:

从地址1开始执行到地址2,或执行到程序结束。

   常用方法:

       G     从当前位置执行到程序结束

       G地址 从当前位置执行到指定地址

3、T(跟踪)命令

   格式:

T[=地址1][数值N]

   功能:

从地址1起执行N条指令后停止。

   常用方法:

       T   仅执行当前一条指令

4、D(显示)命令

   格式:

D[地址]或D[地址1地址2]

   功能:

显示指定内存单元的内容

   常用方法:

       D地址  从指定地址开始显示内存单元的内容

   注:

如果地址仅仅是偏移地址,则系统默认为数据段。

5、R(寄存器)命令

   格式:

R[寄存器名]

   功能:

显示指定寄存器的值

   常用方法:

       R  显示所有寄存器的值

6、Q(退出)命令

   格式:

Q

3.380x86的指令系统

学习汇编语言指令应该把握以下几点:

   ①汇编指令的共性

   ·双操作数指令中,两个操作数不能同为存储单元,也不能同为段寄存器,目的操作数不能为立即数。

   ·单操作数指令中,操作数可以是除立即数以外的任何寻址方式

   ②指令对标志寄存器的影响

   ③各指令的格式、使用方法和注意事项

1、传送指令

1)通用传送指令

包括:

MOV、PUSH、POP、XCHG

 

①MOV最基本的传送指令

格式:

MOV DST,SRC

执行的操作:

(DST)←(SRC)

说明:

Ø目的操作数不能为CS和IP

Ø传送的数据可以是8位或16位,取决于操作数的形式

Ø源操作数的长度应该小于或等于目的操作数的长度

Ø所有通用传送指令都不改变标志位

例如:

MOVAX,BX      √

MOVAX,[BX]    √

MOV[AX],[0000H]×

MOVVALUE,24H  √   

MOVCS,1243H   ×

 

②PUSH、POP堆栈操作指令

·PUSH进栈指令

格式:

PUSHSRC

执行的操作:

   (SP)←(SP)-2

   ((SP)+1,(SP))←(SRC)

·POP出栈指令

格式:

POPDST

执行的操作:

   (DST)←((SP)+1,(SP))

    (SP)←(SP)+2

说明:

ØPUSH和POP是字操作

Ø操作数为除立即数以外的任何形式

ØPOP指令不能用CS

Ø常用于对寄存器值的保存和恢复

 

③交换指令XCHG

格式:

XCHGOPR1,OPR2

操作:

(OPR1)←→(OPR2)

说明:

ØOPR表示操作数

Ø两操作数中至少有一个为寄存器,但不能为段寄存器或IP

Ø允许字/字节操作

如:

   XCHGAX,BX     √

   XCHGAX,[0011H]√

   XCHGBX,1      ×

   XCHGBX,CS     ×

 

2)累加器专用传送指令

包括:

INOUTXLAT

   这组指令只限于使用AX或AL传送信息。

用于与外设直接的数据传递。

①IN输入指令

长格式:

   INAL,PORT(字节)

   INAX,PORT(字)

执行的操作:

   (AL)←(PORT)(字节)

   (AX)←(PORT+1,PORT)(字)

短格式:

   INAL,DX(字节)

   INAX,DX(字)

执行的操作:

   (AL)←((DX))(字节)

   (AX)←((DX)+1,(DX))(字)

 

②OUT输入指令

长格式:

   OUTPORT,AL(字节)

   OUTPORT,AX(字)

执行的操作:

   (PORT)←(AL)(字节)

   (PORT+1,PORT)←(AX)(字)

短格式:

   OUTDX,AL(字节)

   OUTDX,AX(字)

执行的操作:

   ((DX))←(AL)(字节)

((DX)+1,(DX))←(AX)(字)

说明:

ØIN指令:

I/O→AL或AX

ØOUT指令:

AL或AX→I/O

ØI/O设备中前256个端口(0-FFH)端口号可使用长格式直接在指令中指定。

Ø端口号>FFH时,只能用短格式。

例如:

写出下列指令:

把端口34H的字数据送到存储单元str中。

INAX,34H

MOVSTR,AX

或者:

MOVDX,34H

INAX,DX

MOVSTR,AX

把端口2AFH的字节数据送到存储单元str1中。

MOVDX,2AFH

INAL,DX

MOVSTR1,AL

把存储单元STR中的字数据送到端口28H中。

MOVAX,STR

OUT28H,AX

或:

MOVAX,S

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1