西工大软件学院汇编复习资料doc.docx

上传人:b****8 文档编号:9332071 上传时间:2023-02-04 格式:DOCX 页数:60 大小:464.86KB
下载 相关 举报
西工大软件学院汇编复习资料doc.docx_第1页
第1页 / 共60页
西工大软件学院汇编复习资料doc.docx_第2页
第2页 / 共60页
西工大软件学院汇编复习资料doc.docx_第3页
第3页 / 共60页
西工大软件学院汇编复习资料doc.docx_第4页
第4页 / 共60页
西工大软件学院汇编复习资料doc.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

西工大软件学院汇编复习资料doc.docx

《西工大软件学院汇编复习资料doc.docx》由会员分享,可在线阅读,更多相关《西工大软件学院汇编复习资料doc.docx(60页珍藏版)》请在冰豆网上搜索。

西工大软件学院汇编复习资料doc.docx

西工大软件学院汇编复习资料doc

汇编复习资料

使用说明:

1•本资料绝大部分内容來自PPT,部分课本,部分网上。

2.知识点只是列出了主要部分,细节需要仔细看课本,因此每一知识点后均标注出其在课本的页码。

3.课本上老师讲过的例题以及课后所布置的作业是重点,尽量全都搞懂。

4.资料中有些图看不清楚,可根据页码在课本中找到相对应的图。

第一章

1.基木概念P1

机器语言…是用二进制编码的机器指令的集合及一组使用机器指令的规则。

目标程序…用机器语言描述的程序称为目的程序或目标程序。

汇编…把汇编语言源程序翻译成目标程序的过程称为汇编。

2.汇编语言的特点Pl~2

1汇编语言与机器关系密切;

2汇编语言程序效率高;

(吋间:

运行速度快,空间:

目标程序短)

3编写汇编语言源程序繁琐;

4汇编语言程序调试困难,维护、交流和移植程序更困难。

3.汇编语言的使用场合P2

1对软件的执行时间或存储容量有较高要求的场合。

例如:

系统程序的关键核心,智能化仪器仪表的控制系统,实吋控制系统等。

2需要提高大型软件性能的场合。

通常把大型软件中执行频率高的子程序(过程)用汇编语言编写,然后把它们与其他程序一起连接。

3软件与硬件关系密切,软件要有直接和有效控制硬件的场合。

如设备驱动程序等。

4没有合适的高级语言的场合。

4.地址转换规则P6

物理地址二段基地址X10H+偏移地址

5.标志寄存器P5

进位标志CF(CarryFlag):

用于反映运算是否产生进位或借位。

如果运算结果的最高位产生一个进位或借位,则CF置1,否则置0。

奇偶标志PF(ParityFlag):

用于反映运算结果低8位AL中“1”的个数。

“1”的个数为偶数,则PF置1,否则置0。

辅助进位标志AF(AuxiliaryCarryFlag):

在字节操作时低半字节向高半字节进位或借位,字操作时低字节向高字节进位或借位,AF置1,否则置()。

零标志ZF(ZeroFlag):

用于判断结果是否为0。

运算结果0,ZF置1,否则置0。

符号标志SF(SignFlag):

用于反映运算结果的符号,运算结果为负,SF置1,否则置0。

溢出标志OF(OverflowFlag):

反映有符号数加减运算是否溢出。

如果运算结果超过了8位或者16位有符号数的表示范围,则OF置1,否则置0。

屮断标志IF(Interrupt-enableFlag):

决定CPU是否响应外部可屏蔽中断请求。

IF为1时,CPU允许响应外部的可屏蔽中断请求。

方向标志DF(DirectionFlag):

决定串操作指令执行吋有关指针寄存器调整方向。

当DF为1时,串操作指令按递减方式改变有关存储器指针值,每次操作后使SI、DI递减。

第一早

一、寻址方式

1.立即寻址P17

操作数(乂称立即数)包含在指令中。

低字节在前、高字节在后。

1D24:

OIOOB83412MOVAX,1234H

适用于对寄存器或存储器赋值。

2.寄存器寻址P17

操作数在寄存器中。

MOVAX,BX

3.存储器寻址P18~21

操作数在存储器中,指令以某种方式给出操作数在存储器的地址。

1)直接寻址

指令直接包含操作数的有效地址。

MOVAX,BUF2/MOVAX,[000DH]

2)寄存器间接寻址

地址寄存器BX,BP,SI,DI存放操作数的有效地址。

MOVDI,OFFSETBUF2

MOVBX,[Dll

适用于表格的处理。

3)寄存器相对寻址

操作数的有效地址为基址或变址值加上偏移量

MOVBL,BUF[DI]

MOVAX,[BX十5]

MOVAX,5[BX]

适用于实现对结构或记录等数据类型进行的操作。

4)基址变址寻址

操作数的有效地址为基址和变址Z和

MOVAX,[BX+SI]

MOVAX,[BP十DI]

MOVAX,[BP][DI]

适用于数组或表格存取

5)相对基址变址寻址

操作数的有效地址为基址、变址和位移量Z和。

MOVAX,[BX十SI十1122H]

MOVAX,1122H[BX十SI]

MOVAX,1122H[BX][SI]

基址:

BX、BP

变址:

SI、DI

其中,BP默认段地址为SS,BX、SI、DI默认为DS。

二、指令系统(注意指令对标志位的影响)

(1)数据传送指令P28〜32

MOVDEST,SRC传送

MOVSXDEST,SRC有符号数扩展传送

MOVZXDEST,SRC无符号数扩展传送

XCHGOPR1,OPR2交换(不可直接对两个存储器操作数进行交换)

PUSHSRC(PUSHAPUSHAD)压栈

POPDEST(POPAPOPAD)出栈

LEAREG,MEM収有效地址(相当于MOVREG,OFFSETMEM)

LDS(ES,FS,GS,SS)REG,MEM取偏移地址中的内容

XLAT查表(BX存放表的首地址,AL存放表内偏移量,取出表屮一个字节送AL屮)

(2)算术运算指令P32〜38

ADDDEST,SRC加法

ADCDEST,SRC带进位加法

SUBDEST,SRC减法

SBBDEST,SRC带借位减法

INCDEST加1

DECDEST减1

CMPDEST,SRC比较

NEGDEST求补

MULSRC无符号乘(注意乘除法默认寄存器)

IMULSRC有符号乘

DIVSRC无符号除

IDIVSRC有符号除

(3)逻辑运算指令P38〜44

ANDDEST,SRC与

ORDEST,SRC或

XORDEST,SRC异或

NOTDEST非

TESTDEST,SRC测试

SAL

SHL

SAR

SHR

ROL

ROR

RCL

RCR

DEST,OPRD算术左移

DEST,OPRD逻辑左移

DEST,OPRD算术右移

DEST,OPRD逻辑右移

DEST,OPRD循环左移

DEST,OPRD循环右移

DEST,OPRD带进位循环左移

DEST,OPRD带进位循环右移

(4)串操作指令P49~52(以DS:

SI來寻址源串,ES:

DI來寻址目的串)

REP

MOVSB/MOVSW/MOVSD串传送

[REPE亿][REPNZ/NE]CMPSB/CMPSW/CMPSD串比较[REPE/Z][REPNE/NZ]SCASB/SCASW/SCASD串扫描LODSB/LODSW/LODSD串装入

[REP]STOSB/STOSW/STOSD串存储

CLDDFSO

STDDF置1

(5)控制转移指令P44~49(了解SHORT、NEAR、FAR)

JMPTARGET无条件转移

JZ/JETARGET零/等于转移

JA/JNBETARGET无符号数高于/不低于且不等于转移(A>B)

JB/JNAETARGET无符号数低于/不高于且不等于转移(A

JG/JNLETARGET帯符号数大于/不小于且不等于转移(A>B)

JL/JNGETARGET带符号数小于/不大于且不等于转移(A>B)

JCXZTARGET测试CX=0则转移

LOOPTARGETCX-CX—1,若CXH0则循环

LOOPDTARGETECX-ECX—1,若ECXH0则循环

LOOPE/LOOPZTARGETCX-CX—1,若CXH0且ZF=1则循环

(6)输入输出指令P52~54

INDEST,SRC输入(SRC给出目的端口)

OUTDEST,SRC输出(DEST指定端口)

(7)处理器控制P54

NOP空操作

(8)DOS调用P55~57

键盘输入单字符:

1号功能调用。

键入字符的ASCII码送入AL寄存器屮,并且通过显示器显示该字符。

MOVAH,1

INT21H

键盘输入字符串:

0AH号功能调用。

键入字符串的ASCII码存入以DX为首地址的内存空间中。

MOVDX,OFFSETBUF

MOVAH,OAH

INT21H

输出单字符:

2号功能调用。

将置入DL寄存器中的字符(以ASCII码形式表示)通过显示器显示出来。

MOVDL,'A'

MOVAH,2

INT21H

输出字符串:

9号功能调用。

将DX缓冲区中的字符串从显示器显示输出,缓冲区中的字符串以字符作为结束标志。

BUFDB'Thankyou$'

MOVDX,OFFSETBUF

MOVAH,9

INT21H

返回操作系统:

MOVAH,4CH

INT21H

三、中断P55

1.中断的概念:

中断是指由于某种事件的发生(硬件的或软件),计算机暂停执行当前的程序,转而执行另一程序,去处理发生的事件,处理完毕后又返回原程序继续执行的过程。

2.中断矢量表:

在实模式下,在内存地址最低处(00000H〜003FFH)设置1K字节长度的屮断矢量表,表屮存放系统中所有中断服务程序入口地址(中断矢量),中断矢量以4个字节存放在中断矢量表中,每个中断矢量包含一个中断服务程序的16位段地址和16位偏移地址,因此,中断矢量表允许存放256个屮断矢量。

中断矢量表的索引又称中断矢量地址指针由中断类型码n乘以4得到。

IPn=n*4CSn=n*4+2

3.中断指令

IRET中断返回指令

CLI清除中断允许标志,0-1F

STI置位中断允许标志,1-IF

第三章

1.常用伪指令P63~66

1.COUNTDUP(表达式[,表达式])

ONEDB256DUP(1,2,4DUP(?

))

ONE变量所定义的存储区间重复存放数据(1,2,?

?

?

?

),共占用1536(256*6)字节存储单元。

2.类型PTR地址表达式

规定地址表达式的类型。

INCDWORDPTR[BX]

3.SEG变量名或标号名

规定传送标号或变量名的段值。

MOVAX,SEGTARGET;収TARGET段地址

4.OFFSET变量名或标号名

规定传送标号或变量名的偏移地址值。

MOVAX,OFFSETTARGET;取TARGET偏移地址

5.符号名EQU表达式

指定的符号名表示一个指定值,该符号名可在程序中使用。

A

EQU

1024

;A的值为1024o

B

EQU

[BX+SI+1000H]

;B代表指定的寻址方式。

C

EQU

JCXZ

;C代表指定的助记符。

6.LENGTHOF数组名返回数组的长度(元素个数)。

ARRAYDW5DUP(0)

NUMDD3,5,7,9,12,45,89

LENARRAYEQULENGTHOFARRAY;LENARRAY=5

LENNUMEQULENGTHOFNUM;LENNUM=7

(LENGTHOF与SIZEOF区别)

7.SIZE0F数组名

返回数组所包含的总字节数。

ARRAYDW

5DUP(0)

NUMDD

3,5,7,9,12,45,89

SIZEARRAY

EQUSIZEOFARRAY

;SIZEARRAY=10

SIZENUM

EQUSIZEOFNUM

;SIZENUM=28

8.SH0RT标号名

指定转移指令是在下一条指令地址的127个字节范围内。

JMPSHORTTAB

INCAL

I

I

I

TAB:

MOVAL,BL

9.USESREG

指定执行过程时需要保护的寄存器,在过程执行开始,将指定的寄存器保存到堆栈,在过程结束返回前,从堆栈弹出数据恢复原寄存器内容。

USESAX,BX

二、分支程序设计

1.简单分支程序P69〜73

(1)用比较指令实现。

CMPDEST,SRC

JEEQUL

1

1

:

比较两个操作数

1

EQUL:

・・

(2)

用测试指令实现。

TESTDEST,

SRC

:

逻辑与测试

JNZONE

1

1

ONE:

1

(3)

用逻辑指令实现。

SHRDEST,

CL

:

对DEST进行逻辑右移

JCNEXT

1

1

;CF=1,转移至ljNEXT

1

NEXT:

•…

2.复杂分支程序P73〜74

跳转表算法:

在存储器设置一地址表,将多个分支程序的地址顺序存放在表中,以供程序在条件选择某一分支程序时使用。

存储器屮地址表设置如下:

TABDDSUB1

SUB2

SUB3

I

I

I

SUBn

根据分支条件确定对应分支程序的入口地址在地址表中的位置(序号),转去执行分支程序。

三、循环程序设计P74~80

1.REPEAT-UNTIL循环结构程序实现举例。

LOOP指令实现:

MOV

CX,COUNT

;设置循坏初值

AGAIN:

;循环程序入口

LOOP

1

1

AGAIN

;循环控制

1

1

跳转实现:

MOV

CL,COUNT

;设置循坏初值

AGAIN:

DEC

CL

;计数器减1

JNZ

AGAIN

:

循环控制

2.WHILE-DO循环结构程序实现举例。

MOVCX,COUNT;设置循环初值

AGAIN:

JCXZNEXT

I

I

I

DECCX

JMPAGAIN

NEXT:

:

3.多重循环程序

例3.35将内存首地址为BLOCK开始的10个带符号字节数,将其按由大到小的次序排列。

(冒泡法)

四、子程序设计P80~89将程序中经常出现或者具有通用性的某一段指令组定义为子程序,可以缩短程序长度,节省内存空间,在80x86汇编程序屮,子程序常常以过程的形式出现(过程的定义与调用)。

1•过程定义

SUB1

PROC[NEAR][USESAX,BX]

ADDAX,BX

MOVSI,CX

MOVAX,DX

RET

SUB1ENDP

2.调用指令

CALL[NEARPTR]SUB1

CALL[NEARPTR][BX]

CALLFARPTRSUB2

CALLFARPTR[BX]

3.参数传递的3种形式:

1.通过寄存器传送参数;

2.通过地址表传送参数;

3.通过堆栈传送参数或参数地址。

通常利用堆栈传递入口参数,而利用寄存器传递岀口参数。

五、结构和记录P97

1.结构与联合类型说明

例3.57下列语句说明了一个名为PERSON的结构类型:

PERSON

STRUC

ID

DD

0

;偏移量为o

SCORE

DW

60

;偏移量为4

YEAR

DB

10

;偏移量为6

PERSON

ENDS

例3.58设已说明了上述结构PERSON,那么可定义如下结构变量:

STUDENT1

PERSON

<100,85,20>

STUDENT2

PERSON

<18,,>

STUDENT3

PERSON

<>

STUDENT

PERSON

99DUP(?

六、宏P10N105

;三个字段都重赋初值

;字段SCORE、YEAR用缺省初值

;三个字段均用缺省初值

;定义99个结构变量,初值不变

在汇编语言源程序中,若某程序片段需要多次使用,为了避免重复书写,则可把它定义为一条宏指令(宏定义)。

在写源程序吋,程序员用宏指令来表示某个程序片段(宏调用);在汇编吋,汇编程序会扫描源程序,检查是否有已说明的宏指令应用在程序中,如果有则将宏指令所代表的内容插入该宏指令位置处(宏展开)。

1・宏定义-宏调用-宏展开

例3.70定义一条宏指令CHAN,实现对指定寄存器的运算。

CHANMACROREG,COM,NUM

AND

REG,OFH

COMREG,NUM

ENDM

此后,可有如下格式的各种宏调用:

CHANBL,OR,30H

CHANAL,SUB,5在汇编时,宏指令“CHANBL,OR,30H”扩展成如下的代码:

1ANDBL,OFH1ORBL,30H

2•宏与子程序的区别

两种方法均能达到简化源程序的目的,但有质的不同。

两者的区别:

1.关于目标程序。

宏指令:

可简化源程序,但不可简化目标程序。

解决的主要矛盾是速度。

子程序:

可简化源程序和目标程序。

解决的主要矛盾是节约存储空间。

2.关于参数传递。

宏调用时的参数由汇编程序通过实参替换形参的方式实现传递,所以参数很灵话。

子程序调用时的参数须通过寄存器、堆栈或约定的内存单元传递。

3.关于时间开销。

宏调用是在汇编时完成,所以不需要额外的时间开销。

子程序调用和子程序返冋均需要时间,且还涉及堆栈。

4.宏要先定义后调用。

3.与宏有关的局部变量说明伪指令LOCAL

在程序中多次使用宏指令吋,避免宏展开出现标号重复定义错误,可用伪指令LOCAL说明宏的局部标号。

CHANGE1MACRO

LOCAL

LP

AND

AL,

OFH

;屏蔽高4位

CMP

AL,

'A'

JB

LP

;不大于9吋转

ADD

AL,

7

ADD

AL,

30H

ENDM

LP:

第五章

一、I/O控制P192

1.微机与I/O设备、微机与存储器、I/O设备与存储器之间进行数据传送,必须通过接口电路进行连接,以协调各部分工作,实现数据传送同步。

这是由于I/O设备及存储器的特性所决定的,主要是工作速度差异较大。

I/O接口的功能:

①地址译码;

2数据缓冲;

3信息转换(A/D、D/A、并、串);

4提供命令或状态信息;

5定时和控制。

2.四种I/O控制方式:

程序查询方式、川断驱动方式、直接存储器存取方式和专用I/O处理器方式。

MPU与I/O间还有一种最简单的无条件传送方式。

二、程序查询P193~194

方法:

MPU主动、反复查询I/O设备的状态,了解设备是否准备好,是否需要服务,如果需要服务则转入相应的设备服务程序;如果外设未准备好,不需要服务,MPU则继续查询,或者先做一段时间其它事后再接着查询。

特点:

MPU主动,接口电路和查询软件比较简单,但MPU效率低。

适用于实吋性要求不高、或微机操作比较单一、不繁忙的情况。

三、中断控制P194〜201

1.基本中断控制方式

屮断的概念:

当I/O设备需要MPU服务时通过其接口发出屮断请求信号,MPU在收到川断请求后,中断正在执行的程序,保护断点,转去为相应外设服务,执行一个相应的中断服务子程序;中断服务结朿,恢复断点,返回原來被中断的程序继续执行。

特点:

I/O设备与MPU并行工作,MPU处于被动工作方式。

节省MPU时间,提高效率,实时响应。

适用于数据采集、处理和控制系统。

但需中断逻辑电路支持,硬件较复杂。

2.中断判决与控制

程序查询式(软件):

需一个中断请求锁存器,对锁存器查询的次序决定了中断源的优先级别。

特点:

硬件简单,通过软件即可改变优先级。

但中断源多时,响应速度慢。

中断向量式(硬件):

方法:

菊花链优先级判决;

并行优先级判决。

特点:

由屮断源的屮断向量转入服务程序,响应快,但硬件开销大。

3.80X86实方式中断

中断向量表:

P197重点,前面已讲过

4种屮断类型:

(1)外部硬件中断(可屏蔽中断):

INTR脚,受IF位控制;

(2)不可屏蔽屮断:

NMI引脚,不受IF位控制,类型码2;

(3)软件中断:

中断类型码n(INTO、INT3等);

(4)内部中断和异常:

执行--条指令过程中,出现错误等不正常条件而引发的,由内部硬件自动测试,类型码固定。

判优规则:

高①内部中断和异常;

2软件中断INT;

3非屏蔽中断NMI;

v④可屏蔽中断INTR;

低⑤单步中断。

四、8259A可编程中断控制器

INTATNT

1.引脚:

P202

D7~D0:

双向数据线,可直接与系统的数据总线相连。

IR7〜IR0:

中断请求输入线,可接入8个I/O设备的中断请求。

耶:

读命令信号线,低有效,与系统的倾相连。

丽艮写命令信号线,低有效,与系统的15和相连。

CS;芯片选择信号线,低有效,由地址高位译码控制。

A0:

端口选择,当数据总线为8位时,通常直接连至地址总线的A0;当数据总线为16位时,可接至地址总线的A1;当数据总线为32位时,可接至地址总线的A2。

CAS2〜CASO:

级联输入输出信号线,当8259A为主片时,CAS2〜CASO是输出线,在CPU响应屮断时,用来输出级联选择代码,输出接受川断请求的从片编码。

当8259A为从片时,CAS2~CAS0是输入线,接收主片送来的选择编码。

SP;从编程线,作输入时,对主片尿1,对从片SP^Oo

INT:

川断请求输出线,高有效,接至微处理器的INTR端。

INTA:

中断响应输入线,低有效,接至微处理器的而瓜输出端。

2.寄存器:

P203

(1)中断请求寄存器(IRR)

屮断请求寄存器(IRR)为8位,接受来自IRO〜IR7的屮断请求信号,当IRO〜IR7上出现某一中断请求信号时,IRR对应位被置1;

(2)中断屏蔽寄存器IMR

中断屏蔽寄存器IMR为8位(8个中断输入),若IRR(中断请求寄存器)中记录的8个中断请求中有任何一个需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求对以进入优先权判别器;它的内容由CPU通过对8259初始化时设置设定。

(3)中断服务寄存器ISR

8位,保存当前正在处理的中断请求,例如,如果ISR的D2=l,表示CPU正在为来自IR2的中断请求服务。

(4)优先权判别器PR

若某中断请求正在被处理,8259A外部又有新的中断请求,则由优先权判别器将新进入的中断请求和当前正在处理的屮断进行比较,以决定哪一个优先级更高。

若新的屮断请求比正在处理的屮断级别高,由PR通过控制逻辑向CPU发出中断屮请INT,正在处理的中断自动被禁止,先处理级别高的中断。

(5)数据总线缓冲器

用于8259A与数据总线的接口,传输命令控制字、状态字和中断类型码

(6)读/写控制逻辑

确定数据总线缓冲器屮数据的传输方向,选择内部的各命令字寄存器。

当CPU发读信号时将8259A的状态信息放到数据总线上;当CPU发写信号吋,将CPU发来的命令字信息送入指定的命令字寄存器中。

(7)级联缓冲/比较器

用来存放和比较在系统屮用到的所有8259A的级联地址。

主控8259A通过CASO、CAS1和CAS2发送级联地址,选中从控8259A-

3.命令字P204表5.3

1ICW1

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

当前位置:首页 > 医药卫生 > 药学

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

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