汇编复习重点1武汉理工Word下载.docx

上传人:b****7 文档编号:22852579 上传时间:2023-02-05 格式:DOCX 页数:21 大小:99.03KB
下载 相关 举报
汇编复习重点1武汉理工Word下载.docx_第1页
第1页 / 共21页
汇编复习重点1武汉理工Word下载.docx_第2页
第2页 / 共21页
汇编复习重点1武汉理工Word下载.docx_第3页
第3页 / 共21页
汇编复习重点1武汉理工Word下载.docx_第4页
第4页 / 共21页
汇编复习重点1武汉理工Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

汇编复习重点1武汉理工Word下载.docx

《汇编复习重点1武汉理工Word下载.docx》由会员分享,可在线阅读,更多相关《汇编复习重点1武汉理工Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

汇编复习重点1武汉理工Word下载.docx

•SP寄存器中存放的是堆栈操作单元的偏移量,SP总是指向栈顶。

(考试要求要会画堆栈的示意图)

第三章

1、8088/8086与操作数有关的寻址方式

立即寻址方式

寄存器寻址方式

直接寻址方式

寄存器间接寻址方式

寄存器相对寻址方式

基址变址寻址方式

基址变址相对寻址方式

寻址方式总结

三种类型的操作数:

立即数(data),寄存器操作数(reg),存储器操作数(mem)。

双操作数指令的常见格式(以数据传送指令为例)

–MOVreg,data

–MOVmem,data

–MOVreg,reg

–MOVreg,mem

–MOVmem,reg

2.段前缀

寻址方式隐含地规定了存储器操作数的段地址。

允许数据存放在其它的段(代码段除外)。

此时应在指令中给出“段前缀”。

例如,MOVAX,ES:

[3000H]

源操作数的物理地址=(ES)×

10H+3000H

3、8086指令系统

六大类:

数据传送指令,

算术运算指令,

逻辑运算和移位指令,

控制转移指令,

串操作指令,

处理器控制指令

1)数据传送指令

1.MOV指令

–MOVreg,data;

reg:

CS,IP,DS,ES,SS除外

–MOVmem,data

–MOVreg,reg

2.PUSH和POP指令

PUSHregPOPreg

PUSHmemPOPmem

3.交换指令

XCHGreg,reg

XCHGreg,mem

XCHGmem,reg

2)输入输出指令

(1)直接输入输出指令

INAL,PORT;

AL←(PORT)

INAX,PORT;

AX←(PORT+1,PORT)

OUTPORT,AL;

(PORT)→AL

OUTPORT,AX;

(PORT+1,PORT)→AX

注:

PORT为输入输出端口号,范围为0~255(00~FFH)

(2)间接输入输出指令

格式:

INAL,DX;

操作:

AL←(DX)

INAX,DX;

AX←(DX+1,DX)

OUTDX,AL;

(DX)→AL

OUTDX,AX;

(DX+1,DX)→AX

在使用间接输入输出指令之前,需将端口号→DX

3)地址传送指令

地址传送指令有LEA

LEA(LoadEffectiveAddress)(取有效地址指令)

格式:

LEAreg,mem;

将源操作数mem的有效地址EA传送到目的操作数reg,目的操作数为一个16位的通用寄存器。

4)算术运算指令

(1)二进制加法和减法指令

指令名称格式操作

加法ADDDST,SRCDST←SRC+DST

带进位加法ADCDST,SRCDST←SRC+DST+CF

减法SUBDST,SRCDST←DST﹣SRC

带借位减法SBBDST,SRCDST←ST﹣SRC﹣CF

标志位:

所有状态标志都受到指令执行结果的影响。

(2)加1减1和比较指令

名称格式操作

加1INCOPROPR←OPR+1

INCreg

INCmem

减1DECOPROPR←OPR-1

DECreg

DECmem

ODITSZAPC

×

---×

×

-

(3)求补指令

NEGreg

NEGmem

操作:

对操作数按位取反,末位加1。

(4)比较指令

CMPOPR1,OPR2;

操作:

OPR1-OPR2

比较指令实际上是做减法,但不保存相减的结果,只是根据结果置标志位。

通常,把CMP指令安排在条件转移指令(如JZ,JG,JO等)之前

(5).乘法指令

1)带符号乘法

IMULSRC

所执行的操作:

字节操作数:

AX←(AL)*(SRC)

字操作数:

DX:

AX←(AX)*(SRC)

(乘积带符号,并符合一般代数符号规则)

2)无符号乘法

MULSRC

同IMUL,但操作数和乘积均不带符号。

(6)除法指令

1)带符号除法

IDIVSRC

SRC为字节数据:

AL←(AX)/(SRC)之商

AH←(AX)/(SRC)之余数

SRC为字数据:

AX←(DX:

AX)/(SRC)之商

DX←(DX:

AX)/(SRC)之余数

商和余数是带符号的:

商的符号符合一般代数符号规

则,余数的符号与被除数相同。

2)无符号除法

DIVSRC

与IDIV相同,但操作数,商和余数均是无符号的。

5)、符号扩展指令

CBW

将AL中的8位带符号数扩展为16位并送入AX中。

实际上就是将AL的最高位送入AH的所有各位。

CWD

将AX中的16位带符号数扩展为32位并送入DX和AX中(其中DX存放高16位,AX存放低16位)。

实际上就是将AX的最高位送入DX的所有各位。

4.2.3逻辑运算和移位指令

1)逻辑运算指令

名称格式操作

非NOTOPROPR←OPR

或ORDST,DSTDST←DST∧SRC

与ANDDST,SRCDST←DST∧SRC

异或XORDST,SRCDST←DST∨SRC

测试TESTOPR1,OPR2OPR1∧OPR2

标志:

0---×

0

(NOT指令除外,对标志位无影响)

2)移位指令

名称格式操作

逻辑左移SHLOPR,CNT

算术左移SALOPR,CNT

逻辑右移SHROPR,CNT

算术右移SAROPR,CNT

(OPR是除立即数以外的任何一种寻址方式,CNT可以是1或CL)

---×

(左移1位时,若最高位发生改变,则OF=1;

否则OF=0。

名称格式操作

(不带进位)ROLOPR,CNT

循环左移

(不带进位)ROROPR,CNT

循环右移

(带进位)RCLOPR,CNT

(带进位)RCROPR,CNT

4.2.4控制转移指令

1.与转移有关的寻址方式

(无条件转移指令)

例如,

JMPNEARPTRNEXT

JMPFARPTRNEXT

JMPWORDPTR[BX]

JMPDWORDPTR[BX]

NEXT:

标号

3.循环控制指令

LOOPOPR

–功能:

•(CX)-1→CX

•若(CX)=0,则转移至标号OPR处;

否则顺序执行。

4.子程序调用与返回

CALL

RET

5.中断调用与返回

INT

IRET

6、条件转移指令

第四章汇编语言程序格式

1、汇编语言源程序必须符合汇编程序的语法要求

2、语法要求涉及以下方面:

源程序的结构和书写格式,语句行的格式及表达式,伪指令

通常,一个汇编源程序一般应该由3个逻辑段组成,即数据段、堆栈段和代码段。

每个逻辑段以SEGMENT语句开始,以ENDS语句结束。

整个源程序以END语句结束。

1)、数据段用来在内存中建立一个适当容量的工作区,以存放常数、变量等操作数据。

2)、堆栈段用来在内存中建立一个适当的堆栈区,以便在中断、子程序调用时使用。

3)、代码段包括了许多以符号表示的指令,其内容就是程序要执行的指令

–例题从键盘输入10个字符,然后以与键入相反的顺序将10个字符输出到显示屏幕上。

(这个程序的格式很完整,一般的程序按照这个格式来。

DATASEGMENT(数据段)

程序采用分段的格式,每段起始都要有段名,并以SEGMENT开始,以ENDS结束总程序结束符为END,一个源程序只能有、并且只能有一个END。

DATASEGMENT(数据段)中设计数据区。

代码段中ASSUME指明映射的代码堆栈到对应的段。

如果有非代码段则需要对寄存器赋值。

执行从START开始。

程序中应用伪操作来提供帮助,方便记忆。

使用DOS系统功能调用来输入输出、回车换行、结束。

BUFDB11,0,11DUP(?

DATAENDS

CODESEGMENT(代码段)

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,10

INT21H

MOVDL,0DH

MOVAH,2

MOVDL,0AH

MOVAL,BUF+1

MOVAH,0

LEABX,BUF+2

ADDBX,AX

MOVBYTEPTR[BX],‘$’

LEADX,BUF+2

MOVAH,9

MOVAH,4CH

CODEENDS

ENDSTART

语句格式

汇编语言语句可以由以下几部分组成:

[标识符]操作符[操作数][;

注释]

标识符是一个符号,表示本条语句的符号地址。

一般来说,标识符可以是标号和变量。

标号和变量都具备3种属性:

段属性、偏移属性及类型属性。

操作符可以是机器指令、伪指令和宏指令的助记符。

操作数字段是操作符的操作对象。

当有两个或两个以上的操作数时,各操作数之间用逗号隔开。

注释字段是以“;

”开头的说明部分。

注释字段是语句的非执行部分。

常用的伪操作:

1、数据定义伪指令

一般格式:

[变量名]操作符参数[,参数…][;

注释]

常用的数据定义伪指令操作符

定义字节变量伪指令DB

定义字变量伪指令DW

定义双字变量伪指令DD

定义四字变量伪指令DQ

定义十字节变量伪指令DT

常见的参数有以下5种形式:

1、常数或常数表达式

2、?

3、DUP子句

ARRAYDB2DUP(0,1,2,?

)的示意图如下:

ARRAY

 

00

01

02

4、地址表达式(DB除外)

5、字符串

如图:

DATASEGMENT

ADB12H,?

(8位)

BDW?

3456H(16位)

CDDD789ABCDEH(32位)

DDB‘ABCD′

EDW‘AB′,’CD′

DATAENDS

注意:

操作数?

可以保留存储空间,但不存入数据。

DB′AB′和DW′AB′的存储情况不同。

参数DUP可以用来复制某些操作数:

地址计数器$

当前地址计数器所指向的值

算术运算符

常见的有+、-、MOD、SHL、SHR、*、/共7个符号,分别表示加、减、取模(求余数)、逻辑左移、逻辑右移、乘、除。

这些操作符都可用于数据之间的运算,+、-操作符还可用于地址之间、数据与地址之间的运算。

例如,

“124MOD3”的结果为1

“10110101BSHL2”的结果为11010100B

MOVDX,[BLOCK+(6-1)×

2]

数值回送操作数

OFFSET变量名或标号

返回变量或标号的偏移地址部分。

例如,若A为变量名或标号;

则OFFSETA返回A的偏移地址。

注意:

下列两条指令的功能完全相同。

MOVDX,OFFSETBLOCK

LEADX,BLOCK

指定属性(合成)运算符

指定属性运算符可用于指定存储器操作数或标号的属性。

常见的有PTR、:

、THIS等3个符号,其功能分别为:

指定存储器操作数或标号的类型、指定存储器操作数的段归属、指定当地的变量或标号的类型。

类型名PTR存储器操作数或标号

例如,因为操作类型不明确,指令MOV[BX],5不能通过汇编。

下列两条指令有不同的执行结果。

MOVBYTEPTR[BX],5

MOVWORDPTR[BX],5

DOS系统功能调用

指类型为21H的软件中断,其对应的中断处理程序中包含了一系列最常用的功能子程序,这些子程序分别实现外设管理、文件读/写和管理、目录管理等功能。

AH

功能

调用参数

返回参数

01

键盘输入并回显

AL=输入字符

07

键盘输入无回显

02

显示输出

DL=输出字符

09

显示字符串

DS:

DX=串地址

‘$’结束字符串

0A

输入字符串

DX=缓冲区首地址

(DX:

DX)=缓冲区最大

字符数

(DS:

DX+1)=实际

输入的字符数

第五章

1、循环程序的结构

例:

录入四位十六进制数,保存在BX中。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0404H

MOVBX,0

L1:

MOVAH,01H

INT21H

SUBAL,30H

CMPAL,0AH

JLL2

SUBAL,07H

L2:

SHLBX,CL

ORBL,CL

DECCH

JNZL1

MOVAH,4CH

CODEENDS

ENDSTART

更多参考,请看书上例题:

例5.1\例5.4、例5.6

第六章

一、子程序设计方法—子程序调用与返回指令

1.段内直接调用和返回

CALLNEARPTRSUBR

功能:

(IP)入栈,

(IP)+16位位移量→IP

栈顶内容出栈→IP

2.段间直接调用和返回

CALLFARPTRSUBR

功能:

(CS)入栈,(IP)入栈

子程序入口的偏移地址→IP

子程序入口的段地址→CS

RET

栈顶内容出栈→IP

栈顶内容出栈→CS

3、段内调用与段内返回的处理过程

①CPU开始执行CALLSUBR,CS和IP指向断点

②CPU执行CALLSUBR

(IP1)入栈(断点地址入栈),(IP2)→IP

③CPU开始执行RET时,CS和IP指向的位置

④CPU执行RET,

栈顶内容出栈,(IP1)→IP(断点地址出栈,CS和IP重新指向断点)

✧详细应用请参考例题:

例6.4、例6.9、例6.11、习题6.4

第八章

1、中断向量,实际上就是中断服务程序的入口地址。

每个中断向量占4字节的存储单元。

前两个字节单元存放中断服务程序入口地址的偏移量,后两个字节单元存放中断服务程序入口地址的段基值。

2、中断服务程序入口地址信息设置在存储器的最低端,即从00000H~003FFH的1K字节存储空间中。

这一存储空间就叫中断向量表

3、内部中断(INT指令和IRET指令)

INTN;

N:

中断类型码

功能:

(PSW)入栈,(CS)入栈,(IP)入栈;

(N×

4)→IP,(N×

4+2)→CS

IRET

栈顶内容出栈→IP,栈顶内容出栈→CS,栈顶内容出栈→PSW

具体应用请参考课本例题:

例8.5

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

当前位置:首页 > 高中教育 > 其它课程

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

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