《计算机接口技术与应用》复习提纲_第1页
《计算机接口技术与应用》复习提纲_第2页
《计算机接口技术与应用》复习提纲_第3页
《计算机接口技术与应用》复习提纲_第4页
《计算机接口技术与应用》复习提纲_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机接口技术与应用》复习提纲

第一〜二章概述

一、微机组成原理(了解)

二、计算机中的数制

1、无符号数的表示方法:

(1)十进制计数的表示法

(2)二进制计数表示方法:

(3)十六进制数的表示法:

2、各种数制之间的转换

(1)非十进制数到十进制数的转换

按相应进位计数制的权表达式绽开,再按十法制求和。

(2)十进制数制转换为二进制数制

•十进制一二进制的转换:

整数部分:除2取余:

小数部分:乘2取整。

•十进制一十六进制的转换:

整数部分:除16取余;

小数部分:乘16取整。

以小数点为起点求得整数和小数的各个位。

(3)二进制与十六进制数之间的转换

用4位二进制数表示1位十六进制数

3、无符号数二进制的运算

4、二进制数的逻辑运算

特点:按位运算,无进借位

(1)与运算

只有A、B变量皆为1时,与运算的结果就是1

(2)或运算

A、B变量中,只要有一个为1,或运算的结果就是1

(3)非运算

(4)异或运算

A、B两个变量只要不同,异或运算的结果就是1

二、计算机中的码制

I、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作

因原,反码记作[X]反,补码记作[X]补。

对正数,三种表示法均相同,它们的差别在于对负数的表示。

(1)原码

定义:

符号位:0表示正,1表示负;

数值位:真值的确定值。

数0的原码不唯一

(2)反码

定义:

若X>0,则凶反刁X]原

若X<0,则[X]反二对应原码的符号位不变,数值部分按位求反

数0的反码也不唯一

(3)补码

定义:

若X>0,则壮>补=[为反=区]原

若XvO,则凶补二凶反+1

注:机器字长为8时,数0的补码唯一,同为0000000。

2、8位二进制的表示范围:

原码:-127〜+127

反码:-127-+127

补码:-128〜+127

3、特别数10000000

该数在原码中定义为:-0

在反码中定义为:-127

在补码中定义为:-128

对无符号数:(10000000)2=128

4、补码加减运算规则

[X]补+[丫]补=乎+丫]补

[X]补一[丫]补=[岗补+[—丫]补=平一丫]补

5、BCD码:十进制数的二进制数编码

用4位二进制数表示一位十进制数。有两种表示法:

(1)压缩BCD码的每一位用4位二进制表示,0000~1001表示0〜9,一个字节

表示两位十进制数。

(2)非压缩BCD码用一个字节表示一位十进制数,高4位总是0000,低4位的

0000〜1001表示0〜9

6、ASCII码:接受7位二进制代码对字符进行编码

(1)数字0〜9的编码是0110000~0111001,它们的高3位均是011,后4位正好

与其对应的二进制代码(BCD码)相符。

(2)英文字母A-Z的ASCH码从1OOOOO1(41H)起先依次递增,字母a~z的

ASCII码从1100001(61H)起先依次递增,这样的排列对信息检索特别有利。

(3)编程时常用a、b、c来表示a、b、c的ASCH码(61H、62H、63H),

增加可读性。

第三章8086/8088微处理器及其系统

第一节8086/8088微处理器

1、8086是一种单片微处理芯片,其内部数据总线的宽度是16位,外部数据总线宽度也

是16位(8088为8位),片内包含有限制计算机全部功能的各种电路。

三总线(AB、DB、CB)的方向和宽度:8086/8088地址总线的宽度为20位,有1MB

(22。)的存储器寻址空间和64KB(216)I/O端口寻址空间。

2、8086CPU由总线接口部件BIU和执行部件EU组成。

BIU和EU的操作是异步的,为8086取指令和执行指令的并行操作体系硬件支持。

3、8086处理器寄存器结构

・8086微处理器包含有13个16位的寄存器和9位标记位。

•4个通用寄存器(AX,BX,CX,DX)

•4个段寄存器(CS,DS,SS,ES)

•4个指针和变址寄存器(SP,BP,SI,DI)

•指令指针(IP)

1)通用寄存器

(1)8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:

AXfAH,AL

BXfBH,BL

CX-CH,CL

DX-DH,DL

常用来存放参与运算的操作数或运算结果

(2)数据寄存器特有的习惯用法

AX:累加器。多用于存放中间运算结果。全部I/O指令必需都通过AX与接

口传送信息;

BX:基址寄存器。在间接寻址中用于存放基地址;CX:

计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数;DX:

数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的

I/O指令中存放I/O端口地址。

2)指针和变址寄存器

SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:

基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。SI:

源变址寄存器

DI:目标变址寄存器

变址寄存器常用于指令的间接寻址或变址寻址。

3)段寄存器

CS:代码段寄存器,代码段用于存放指令代码DS:

数据段寄存器,存放当前程序的数据ES:附加

段寄存器,数据段和附加段用来存放操作数SS:堆栈段寄

存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数

4)指令指针(IP)

16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。

5)标记寄存器

(1)状态标记:

进位标记位(CF):运算结果的最高位有进位或有借位,则CF=1帮

助进位标记位(AF):运算结果的低四位有进位或借位,则AF=1溢

出标记位(OF):运算结果有溢出,则OF=1

零标记位(ZF):反映指令的执行是否产生一个为零的结果

符号标记位(SF):指出该指令的执行是否产生一个负的结果

奇偶标记位(PF):表示指令运算结果的低8位“1”个数是否为偶数

(2)限制标记位

中断允许标记位(IF):表示CPU是否能够响应外部可屏蔽中断请求

跟踪标记(TF):CPU单步执行

4、8086/8088的最小/最大运行方式

•当MN/MX*接电源电压时,系统工作于最小方式。

•当MN/MX*线接地,系统就工作于最大方式。

•最小工作模式用于单机系统,系统中全部总线限制信号全部由8086干脆供应,因

此系统中的总线限制电路可减到最少;最大工作模式用于多处理机系统,8086作

为主处理器,其它的处理器为协处理器,扶植主处理器工作。在最大工作模式下,

系统所须要的限制信号均由总线限制器8288供应。通过8288对CPU发出的限制

信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器8282

及对总线收发器8286的限制信号,使总线限制功能更加完善。

5、8086的引脚及其功能

•ADI5〜AD0:双向三态的地址数据总线,输入/输出信号

•BHE*:8086的BHE/S7引脚有效时,表示总线高8位AD15-AD8上的数据有效。

在8088最小方式时为SS。*;在最大方式时恒为高电平。

•M/IO*(IO/M*):存储器/IO访问有效信号。对于8086,高电平表示访问存储器,

低电平访问I/O外设;8088相反。

•ALE:地址锁存允许信号,输出,用作锁存器8282/8283的锁存允许信号。

•RD*、WR*:读写限制信号,输出。

•DEN*:数据允许,输出,低电平有效。作为总线收发器(8286/8287)的限制信号。

•DT/R*:数据发送/接收限制,输出,作为总线收发器(8286/8287)的限制信号。

•INTR:可屏蔽中断请求输入信号,高电平有效。可通过设置IF的值来限制。

•NMI:非屏蔽中断输入信号。不能用软件进行屏蔽。

•RESET:复位输入信号,高电平有效。

•MN/MX*:最小最大模式输入限制信号。

•CLK:系统时钟输入。

6、8086/8088的区分

・8088的指令队列长度为4个字节,8086为6个字节

・8088的地址/数据复用线为8条,即AD7~AD。,8086为16条,即AD15〜ADO

・8088中的存储器/IO限制线为IO/M*(28脚),与8086相反

・8086的引脚BHE*/S7在8088中为SSO*(34脚),与DT/R*(27脚)、IO/M*(28

脚)一起确定最小模式中的总线周期操作

第三节存储器

1、8086/8088存储器的结构

(1)8086CPU具有1MB的寻址实力,运用20根地址线A19-A0,数据总线为16位

DI5〜DO。系统的IMB存储器分为两个512KB的存储体。一个为奇地址存储体,一个为

偶地址存储体。

(2)当进行16位数据操作时,若数据的低8位放在偶地址存储体中,而高8位放在

奇地址存储体中,则在一个总线周期内完成数据的传送。反之,则须要两个总线周期才能

完成该数据的传送。

2、堆栈(基本构成规则和用途)

8086/8088系统中的堆栈是用段定义语句在存储器中定义的一个堆栈段,一个系统具

有的堆栈数目不受限制,一个栈的深度最大为64KB。堆栈由堆栈段寄存器SS和堆栈指针

SP来寻址,SS:SP指向栈顶(地址较小的一端)。

堆栈的操作均以字为单位遵循“后进先出”的原则进行。

堆栈主要用来实现子程序调用参数传递、中断现场爱惜、寄存器赋值等。

3、“段加偏移”寻址机制(驾驭物理地址与逻辑地址间的换算关系)

・物理地址=(段地址)左移4位+偏移地址(或称为“有效地址”或“偏移量”)

•“段跨越前缀”物理地址的表示方法:段地址:偏移地址(每个段内空间64KB)

第三章8086指令系统

第一节8086寻址方式

一、数据寻址方式

1、固定寻址

有些单字节指令其操作是规定CPU对某个固定的寄存器进行的。

如:

规定被调整的数总是位于/L中

2、立刻寻址

操作数(为一常数)干脆由指令给出

(此操作数称为立刻数)

立刻寻址只能用于源操作数

例:

MOVAX,1C8FH

MOVBYTEPTR[2A00H],8FH

错误例:

xMOV2AOOH.AX,•错误!

指令操作例:MOVAX,3102H;AX-»3102H

执行后,(AH)二行H,(AL)=02H

3、寄存器寻址

(1)操作数放在某个寄存器中

(2)源操作数与目的操作数字长要相同

(3)寄存器寻址与段地址无关

例:

MOVAX,BX

MOV[3F00H],AX

MOVCL,AL

错误例:

xMOVAX,BL;字长不同

;寄存器与段无关

XMC)yES:AXfDX

4、存储器寻址:干脆寻址

(1)指令中干脆给出操作数的16位偏移地址偏移地址也称为有效地址(EA,Effective

Address)

(2)默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀

(3)偏移地址也可用符号地址来表示

例:

MOVAX/2A00H]

MOVDX,ES:/2A00H]

MOV

5、存储器寻址:间接寻址

•基址寻址

操作数的偏移地址(有效地址EA)由基址寄存器(BX、BP)内容及偏移量定

•变址寻址

操作数的偏移地址由变址寄存器(SI、DI)内容及偏移量定

例:MOVAXJBX1

MOVCL,CS:[DI]

错误例:xMOVAX,[DX]

xMOVCL,[AX]

MOVAX,|BX+8|

MOVCX,TABLE[SI]

MOVAX,[BP|;默认段寄存器为SS

□MOVAX,DATA[BX]

若(DS)二6000H,(BX)=1DOOH,DATA=2A00H,

(63A00H)=66H,(63AOIH)=55H

则物理地址=60000H+1000H+2A00H=63A00H

指令执行后:(AX)=5566H

•基址力口变址寻址

操作数的偏移地址由基址寄存器和变址寄存器及偏移量定

留意:除了有段跨越前缀的状况外,当基址寄存器为BX时,操作数应当存放在数据段DS

中,当基址寄存器为BP时,操作数应放在堆栈段SS中。例:

MOVAX,IBXJ[SI]

MOVAX,[BX+SIJ

MOVAX,DS:[BP][DI]

错误例:

XMOVAX,[BX][BP]

xMOVAX,[DI][SI]

指令操作举例:MOVAX,DATA[DI][BX]

^(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H

则指令执行后(AH)=|8302IH],(AL)=|83020H]

6、串操作指令寻址

•隐含SI/DI寄存器寻址

如:REPMOVSB;字节传送;ES:[DI]<-DS:[SIJ;

SI-SI±1,DI-DI±I

将由SI作为指针的源串中的1个字节或字,传送到由DI作为指针的目标串中,且相

应地自动修改SI/DL使之指向下一个元素。假如加上REP前缀,则每传送一个元素,

CX自动减1,直到cx=o为止。

7、I/O端口寻址

•干脆端口寻址:端口号:0〜255

•间接端口寻址:端口号:0-65535,接受DX做中间寄存器

8、转移类寻址

•段内短转移

•段内干脆转移

•段内间接转移

•段间干脆转移

•段间间接转移

其次节8086指令系统

一、数据传送指令

8086/8088接受可变长指令,指令长度为1〜6个字节,有无操作数、单操作数和双

操作数三种指令类型。

1、通用传送指令

(1)MOVdesttsrc;dest*-src

传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。

具体来说可实现:

①MOVmem/reg1,mem/reg2

指令中两操作数中至少有一个为寄存器

②MOVreg,data;立刻数送寄存器

③MOVmem,data;立刻数送存储单元

@MOVacc,mem;存储单元送累加器

⑤MOVmem,acc;累加器送存储单元

⑥MOVsegreg,mem/reg;存储单元/寄存器送段寄存器

©MOVmem/reg,segreg;段寄存器送存储单元/寄存器

MOV指令的运用规则

①IP不能作目的寄存器

②不允许mem—mem

③不允许scgrcg<scgrcg

④立刻数不允许作为目的操作数

⑤不允许segreg-立刻数

⑥源操作数与目的操作数类型要一样

⑦当源操作数为单字节的立刻数,而目的操作数为间址、变址、基址+变址的内存数时,必

需用PTR说明数据类型。如:MOV[BX],12H是错误的。

2、堆栈指令

什么是堆栈?

按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。

规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了

所用堆栈区的大小。堆栈的最高地址叫栈底。

①压栈指令PUSH

PUSHsrc;src为16位操作数

例:PUSHAX;将AX内容压栈

执行操作:(SP)-1—高字节AH

(SP)-2一低字节AL

(SP)—(SP)-2

留意进栈方向是高地址向低地址发展。

②弹出指令POP

POPdest

例:POPBX;将栈顶内容弹至BX

执行操作:(BL)—(SP)

(BH)―(SP)+1

(SP)―(SP)+2

堆栈指令在运用时需留意的几点:

①堆栈操作总是按字进行

②不能从栈顶弹出一个字给CS

③堆栈指针为SS:SP,SP恒久指向栈顶

@SP自动进行增减量(-2,+2)

3、交换指令XCHG

格式:XCHGreg,mem/reg

功能:交换两操作数的内容。

4、查表指令XLAT

执行的操作:AL-[(BX)+(AL)]

5、输入输出指令

只限于用累加器AL或AX来传送信息。

功能:(累加器)<-->1/0端口

(1)输入指令IN

格式:

INacc,PORT;PORT端口号0〜255H

INacc,DX;DX表示的端口范围达64K

例:INAL,80H;(AL)」(80H端口)

INAL,DX;(AL)一((DX))

(2)输出指令OUT

格式:OUTport,acc

OUTDX,acc

例:OUT68H,AX;(69H,68H)—(AX)

OUTDX,AL;((DX))*-(AL)

在运用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器

如:

MOVDX,220H

INAL,DX;将220H端口内容读入AL

6、目标地址传送指令

(1)LEA

传送偏移地址

格式:LEAreg,mem;将指定内存单元的偏移地址送到指定寄存器

要求:

源操作数必需是一个存储器操作数;

•目的操作数必需是一个16位的通用寄存器。

例:LEABX,[SI+10H]

设(SI)=1000H

则执行该指令后,(BX)=1OIOH

留意以下二条指令差别:

LEABX,BUFFER

MOVBX,BUFFER

前者表示将符号地址为BUFFER的存储单元的偏移地址取到BX中;后者表示将

BUFFER存储单元中的内容取到BX中。

(2)LDSd,s

取某变量的32位地址指针。从由指令的源s所指定的存储单元起先,由4个连续存

储单元中取出某变量的地址指针(共4个字节),装入DS和另一个非段寄存器。其中:

•前两个字节(偏移量)一由指令的目标d所指定的某16位通用寄存器

•后两个字节(段基址)一DS段寄存器

例:LDSDI,[2130H]

设(DS)=3000H,(32130H)=34H,(32131H)=00H,(32I32H)=00H,(32133H)=12H

则(DI)=0034H,(DS)=1200H

(3)LESd,s

与LDSd,s指令的操作基本相同,其区分仅在于洛把由源所指定的某变量的地址指针

中后2个字节(段地址)传送到ES段寄存器,而不是DS段寄存器。

须要留意:

•LEA是将16位有效地址装入任何一个16位通用寄存器

•LDS是将32位地址指针装入任何一个16位通用寄存器及DS段寄存器

•LES是将32位地址指针装入任何一个16位通用寄存器及ES段寄存器

二、算术运算指令(要特别留意对标记位的影响)

1、加法指令

(1)不带进位的加法指令ADD

格式:ADDacc,data

ADDmem/reg,data

ADDmem/reg1,mem/reg2

实例:

ADDAL,30H

ADDSL[BX+20H]

ADDCX,SI|DI|,

ADD200H

ADD指令对6个状态标记均产生影响。

例:己知(BX尸D75FH

指令ADDBX.8046H执行后,状态标记各是多少?

D75FH=1110011101011111

8046H=1000000001000110

I11111

0110011110100101

结果:C=l,Z=0,P=0,A=l,O=l,S=0

推断溢出与进位

从硬件的角度:默认参与运算的操作数都是有符号数,当两数的符号位相同,而和的结果

相异时有溢出,则OF=1,否则OF=0

(4)带进位的加法ADC

ADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标记CF的内容,例

如:

ADCAL,68H;AL—(AL)+68H+(CF)

ADCAX,CX;AX—(AX)+(CX)+(CF)

ADCBX,[DI];BX<-(BX)+[DI+1][DI]+(CF)

(3)加1指令INC

格式:INCreg/mem

功能:类似于C语言中的什操作:对指定的操作数加1

例:INCAL

INCSI

INCBYTEPTR|BX+4]

注:本指令不影响标记。比ADOAX,1执行效率要高

(4)非压缩RCD码加法调整指令AAA

AAA指令的操作:

假如AL的低4位>9或AF=1,则:

①AL-(AL)+6,(AH)—(AH)+1,AF-1

②AL高4位清零

③CF—AF

否则AL局4位清零

(5)压缩BCD码加法调整指令DAA

两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码.

指令操作(调整方法):

若AL的低4位>9或AF=I

则(AL)—(AL)+6,AF-1

若AL的高4位>9或CF=1

则(AL)—(AL)+60H,CF—1

除OF外,DAA指令影响全部其它标记。

DAA指令应紧跟在或ADC指令之后.

2、减法指令

(1)不考虑借位的减法指令SUB

格式:SUBdest,src

操作:dest<—(dest)-(src)

注:1.源和目的操作数不能同时为存储器操作数

2.立刻数不能作为目的操作数

指令例子:

SUBAL,60H

SUB[BX+20H],DX

SUBAX,CX

(2)考虑借位的减法指令SBB

SBB指令主要用于多字节的减法。

格式:SBBdest,src

操作:dest<—(dest)-(src)-(CF)

指令例子:

SBBAX,CX

SBBWORDPTR[SI],2080H

SBB[SI],DX

(3)减1指令DEC

作用类似于C语言中的“一一”操作符U

格式:DECopr

操作:opr4—(opr)-l

指令例子:

DECCL

DECBYTEPTR[DI+2]

DECSI注:本指令不影响C尸标记。

(4)求补指令NEG

格式:NEGopr

操作:opr—O-(opr)

对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的确定值。

例:若(AL)=0FCH,则执行NEGAL后,

(AL)=04H,CF=l

(5)比较指令CMP

格式;CMPdcst,src

操作:(dest)-(src)

CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标记位上。

指令例子:

CMPAL,0AH

CMPCX,SI

CMPDL[BX+03]

(6)非压缩BCD码减法调整指令AAS

对AL中由两个非压缩的BCD码相减的结果进行调整。调整操作为:

若AL的低4位>9或AF=1,则:

①AL-(AL)-6,AH-(AH)-1,AF-1

②AL的高4位清零

③CF—AF

否则:AL的高4位清零

(7)压缩BCD码减法调整指令DAS

对AL中由两个压缩BCD码相减的结果进行调整。调整操作为:

若AL的低4位>9或AF=1,则:

AL—(AL)-6,且AF—1

若AL的高4位>9或CF=1,则:

AL—(AL)-60H,且CF—1

DAS对OF无定义,但影响其余标记位。

DAS指令要求跟在减法指令之后。

3、乘法指令

进行乘法时:8位*8位-16位乘积

16位*16位-32位乘积

(1)无符号数的乘法指令MUL(MEM/REG)

格式:MULsrc

操作:字节操作数(AX)—(AL)x(src)

字操作数(DX,AX)—(AX)x(src)

指令例子:

MULBL;(AL)x(BL),乘积在AX中MUL

CX;(AX)x(CX),乘积在DX,AX中

MULBYTEPTR[BXJ

(2)有符号数乘法指令IMUL

格式与MUL指令类似,只是要求两操作数均为仃符号数。

指令例子:

IMULBL;(AX)—(AL)x(BL)

IMULWORDPTR[SI];

(DX,AX)<-(AX)x([SI+l][SI])

留意:MUL/IMUL指令中

•AL(AX)为隐含的乘数寄存器;

•AX(DX,AX)为隐含的乘积寄存器;

•SRC不能为立刻数;

•除CF和OF外,对其它标记位无定义。

4、除法指令

进行除法时:16位/8位一8位商

32位/16位116位商

对被除数、商及余数存放有如下规定:

被除数商余数

字节除法AXALAH

字除法DX:AXAXDX

(1)无符号数除法指令DIV

格式:DIVsrc

操作:字节操作(AL)-(AX)/(SRC)的商

(AHWAX)/(SRC)的余数

字操作(AX)<-(DX,AX)/(SRC)的商

(DX)一(DX,AX)/(SRC)的余数

指令例子:

DIVCL

DIVWORDPTR[BX]

(2)有符号数除法指令IDIV

格式:IDIVsrc

操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。

留意:对于DIV/IDIV指令

AX(DX,AX)为隐含的被除数寄存器。

AL(AX)为隐含的商寄存器。AH(DX)

为隐含的余数寄存器。

src不能为立刻数。

对全部条件标记位均无定

关于除法操作中的字长扩展问题

•除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展.否则产

生错误。

•对于无符号数除法扩展,只需将AH或DX清零即可。

•对有符号数而言,则是符号位的扩展。可运用符号扩展指令CBW和CWDo

三、逻辑运算和移位指令

1、逻辑运算指令

(1)逻辑与AND

对两个操作数进行按位逻辑“与”操作。

格式:ANDdest,src

用途:保留操作数的某几位,清零其他位。

例1:保留AL中低4位,高4位清0。

ANDAL,0FH

(2)逻辑或OR

对两个操作数进行按位逻辑“或“操作。

格式:ORdest,src

用途:对操作数的某几位置1:对两操作数进行组合。

例1:把AL中的非压缩BCD码变成相应十进制数的ASCII码。

ORAL,3DH

(3)逻辑非NOT

对操作数进行按位逻辑"非“操作。格式:NOTmem/reg

例:NOTCX

NOTBYTEPTRIDI]

(4)逻辑异或XOR

对两个操作数按位进行“异或“操作。

格式:XORdest,src

用途:对reg清零(自身异或)

把reg/mem的某几位变反(与"1"异或)

例1;把AX寄存器清零。

①MOVAX,0

②XORAX,AX

③ANDAX,0

@SUBAX,AX

(5)测试指令TEST

操作与AND指令类似,但不将“与"的结果送回,只影响标记位。

TEST指令常用于位测武与条件转移指令一起用。

例:测试AL的内容是否为负数。

TESTAL,80H;检查AL中D7=l?

JNZMINUS;是1(负数),转MINUS

……;否则为正数

2、移位指令

(1)非循环移位指令

算术左移指令SAL(ShiftArithmeticLeft)

算术右移指令SAR(ShiftArithmeticRight)

逻辑左移指令SHL(ShiftLeft)

逻辑右移指令SHR(ShiftRight)

这4条指令的格式相同,以SAL为例:

'CL;移位位数大于1时

SALmem/reg

1;移位位数等于1时

算术移位——把操作数看做有符号数;

逻辑移位——把操作数看做无符号数。

移位位数放在CL寄存器中,假如只移1位,也

可以干脆写在指令中。例如:

MOVCL,4

SHRAL,CL;AL中的内容右移4位

影响C,P,S,Z,0标记。

结果未溢出时:

左移1位三操作数*2

右移1位三操作数/2

(2)循环移位指令:将操作数首尾相接进行移位(了解,不做深化要求)

四、限制转移指令

1、转移指令

(1)无条件转移指令JMP

格式:JMPlabel

本指令无条件转移到指定的目标地址,以执行从该地址起先的程序段。

(2)条件转移指令(补充内容)

①依据单个标记位设置的条件转移指令

JB/JC;低于,或CF=1,则转移

JNB/JNC/JAE;高于或等于,或CF=O,则转移

JP/JPE;奇偶标记PF=1(偶),则转移

JNP/JPO;奇偶标记PF=O(奇),则转移

JZ/JE;结果为零(ZF=1),则转移

JNZ/JNE;结果不为零(ZF=O),则转移

JS;SF=1,则转移

JNS;SF=O,则转移

JO;OF=1,则转移

JNO;OF=0,则转移

②依据组合条件设置的条件转移指令这

类指令主要用来推断两个数的大小。

•推断无符号数的大小

JA高于则转移

条件为:CF=OAZF=O,即A>B

JNA/JBE低于或等于则转移

条件为:CF=IVZF=1,即A<B

JBAvB则转移

JNBANB则转移

•推断有符号数的大小

JG;大于则转移(A>B)

条件为:(SF㊉OF=O)/\ZF=O

JGE;大于或等于则转移(ANB)

条件为:(SF㊉OF=0)VZF=1JLE;小于或等于则转移(AgB)

条件为:(SF㊉OF=1)VZF=1

JL;小于则转移(AVB=

条件为:(SF㊉OF=1)AZF=0

2、循环限制指令

用在循环程序中以确定是否要接着循环。

循环次数通常置于CX中。

转移的目标应在距离本指令-128〜+127的范围之内。

循环限制指令不影响标记位。

(1)LOOP

格式:LOOPlabel

操作:(CX)-ITCX;

若(CX)#0,则转至label处执行;

否则退出循环,执行LOOP后面的指令。

LOOP指令与下面的指令段等价:

DECCX

JNZlabel

3、过程调用指令

(1)调用指令CALL

一般格式:CALLsub\sub为子程序的入口

4、中断指令

(1)INTn执行类型n的中断服务程序,N=0〜255

五、处理器限制指令

1、标记位操作

(1)CF设置指令

CLC0-CFSTC1->CFCMCCF变反

(2)DF设置指令

CLD0—DF(串操作的指针移动方向从低到高)

STD1-DF(串操作的指针移动方向从高到低)

(3)IF设置指令

CLI0-1F(禁止INTR中断)STI1-IF(开放INTR中断)

2、HLT(halt)

执行HLT指令后,CPU进入暂停状态。

五、编写指令时须要留意几个问题

(1)留意区分立刻寻址方式和干脆寻址方式

如:MOVAX,123;将数据123放入AX寄存器中

MOVAX,[123];将数据段中123单元内容放入AX寄存器中

(2)运用寄存器间接寻址时应留意和寄存器寻址方式的区分

如;MOVAX,BX;将BX中的内容放入AX寄存器中

MOVAX,[BX];将BX指示的地址中的内容送入AX中

(3)在双操作数指令中,源操作数和目的操作数地址不能同时为存储器地址

(4)段跨越前缀可修改操作数所在的段,且段跨越前缀不能用CS

如:MOVDL,MESSI[SI];源操作数地址为:

;(DS)xl6+(SI)+OFFSETMESSI

MOVDL,ES:MESS2[SI1;源操作数地址为:

;(ES)xl6+(SI)+OFFSETMESS2

(5)代码段寄存器CS小行用作指令的目的寄存器

(6)指令对地址还是对地址中的内容操作要分清

如:LEABX,MESS;(BX)-MESS的偏移地址

MOVBX,MESS;(BX)-MESS的内容

(7)运用指令时要留意指令隐含的操作寄存器

如:乘/除法(AX,DX:AX)>串指令的寻址(SKDD、十进制调整指令(AL)

(8)对带符号数和无符号数操作应正确选择相应的条件转移指令

(9)移位指令的目标操作数只允许伟8/16位通用寄存器或存储器操作数,移位的次数假

如为1,可以写立刻数;假如>1,则必需事先装入CL,而不能用立刻数表示。

(10)用移位指令来倍增或倍减一个值很便利,但要留意对带符号数和无符号数运用的指

令不同。

如(AX)=8520H,(AX)为无符号数时,(AX)/2可用

SHRAX,1,得到(AX)=4290H,假如(AX)为有符号数,结果变成了OC290H

(11)留意标号与变量(数据符号)的区分

(12)堆栈操作应以字为单位进行

<13)串操作指令的初始化条件

如:程序改错

•MOVDS,1000H

MOVAX,1000H

MOVDS,AX

•MOVCS,AX

■MOV[100],23H

MOVBYTEPTR[100],23H

MOVAL,CX

MOVAX,CX

・MOV[BX],[SI]

MOVAX,[BX]

MOV[SI],AX

・ADDAX,[BX+BP+6]

ADDAX,[BX1DI16]

・PUSHDL

PUSHDX

■INAX,[3FH]

INAX,3FH

OUT3F8H,AL

MOVDX,03F8H

OUTDX,AL

IMUL4CH

MOVBL,4cH

IMULBL

INT300

•SHLBX,5

MOVCL,5

SHLBX,CL

第四章8。86汇编语言程序设计

第一节伪指令

0、CPU指令与伪指令之间的区分:

(DCPU指令是给CPU的叮嘱,在运行时由CPU执行,每条指令对应CPU的一种特定

的操作。而伪指令是给汇编程序的叮嘱,在汇编过程中由汇编程序进行处理。

(2)汇编以后,每条CPU指令产生一一对应的目标代码;而伪指令则不产生与之相应的

目标代码。

1、数据定义伪指令

(1)数据定义伪指令的一般格式为:

[变量名]伪指令操作数[,操作数…]

DB用来定义字节(BYTE)

DW用来定义字(WORD)

DD用来定义双字(DWORD)

(2)操作数的类型可以是:

①常数或常数表达式

例如:DATA_BYTEDB10,5,10H

DATA_WORDDW100H,100,-4

DATA_DWDD2*30,OHTBU

②可以为字符串(定义字符串最好运用DB)

例如:charlDB„ABM

③可以为变量

④可以为?号操作符

例如:XDB5,?,6

?号只是为了给变量保留相应的存储单元,而不赐予变量某个确定的初值。

⑤重复次数:NDUP(初值[,初值…])

例如:ZERODB2DUP(3,5)

XYZDB2DUP(0,2DUP(1,3),5)

⑥在伪操作的操作数字段中若运用$,则表示的是地址计数器的当前值。

2、补充内容:

(1)类型PTR地址表达式例如:MOVBYTEPTR[BX],12H

INCBYTEPTR[BX]

留意:单操作数指令,当操作数为基址、变址、基变的时候必需定义

3、符号定义伪指令

(1)EQU

格式:名字EQU表达式

EQU伪指令将表达式的值赐予一个名字,以后可用这个名字来代替上述表达式。

例:CONSTANTEQU100

NEW_PORTEQUPORT_VAL+1

(2)=(等号)

与EQU类似,但允许重新定义

例:

I

I

EMP=7;值为7

EMP=EMP+1;值为8

(3)LABEL

LABEL伪指令的用途是定义标号或变量的类型

格式:名字LABEL类型

变量的类型可以是BYTE,WORD,DWORDc标号的类型可以是NEAR或FAR

4、段定义伪指令

与段有关的伪指令有:

SEGMENT>ENDS、ASSUME、ORG

(1)段定义伪指令的格式如下:

段名SEGMENT[定位类型][组合类型]「类别"]

I

I

段名ENDS

SEGMENT和ENDS

这两个伪指令总是成对出现,二者前面的段名一样。二者之间的删节部分,对数据段、

附加段及堆栈段,一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。此外,

还必需明确段和段寄存器的关系,这可由ASSUME语句来实现。

(2)ASSUME

格式:

ASSUME段寄存器名:段名卜段寄存器名:段名[,…]]

ASSUME伪指令告知汇编程序,将某一个段寄存器设置为某一个逻辑段址,即明确指出

源程序中逻辑段与物理段之间的关系。

(3)ORG

伪指令ORG规定了段内的起始地址或偏移地址,其格式为:

ORG〈表达式〉

表达式的值即为段内的起始地址或偏移地址,从今地址起连续存放程序或数据。

5、汇编程序的一般结构(记住)

DATASEGMENT

BUFDB100DUP(?)

BUFLEN=$-BUF

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

BGN:MOVAX,DATA

MOVDS,AX

MOVAH,4CH

INT21H

CODEENDS

ENDBGN

第三节程序设计

I、依次程序的设计(略)

2、分支程序的设计

典型例题:

1X>0

Y=\r

0x二o

i-1X<0

程序为*

MOVAL,X

CMPAL,0

JGEBIG

MOVY,-1

JMPEXITBIG:

JEEQULMOV

Y,1

JMPEXIT

EQUL:MOVY,0

EXIT:....

3、循环程序

用计数限制循环

4、DOS功能调用——TNT21H

熟悉01H、02H、09H、0AH和4cH的用法,入口、出口参数。

5、程序调试

(1)汇编工具;

(2)连接工具;

将汇编语言源文件形成可执行文件。

(3)DEBUG的基本用法

熟悉常用叮嘱(U、D、G、T、R等)。

第五章存储器

1、微处理器与存储器接口时,高位地址总线的译码方案有:

(1)全译码法

除去与存贮芯片干脆相连的低位地址总线之外,将剩余的地址总线全部送入“片外地

址译码器”中进行译码的方法就称为全译码法。其特点是物理地址与实际存贮单元一一对

应,但译码电路困难。

(2)部分译码法

除去与存贮芯片干脆相连的低位地址总线之外,剩余的部分不是全部参与译码的方法

就称为部分译码。其特点是译码电路比较简洁,但出现“地址重叠区”,一个存贮单元可

以由多个地址对应。

(3)线选法

在剩余的高位地址总线中,任选一位作为片选信号干脆与存贮芯片的片选引脚相连,

这种方式就称为线选法。其特点是无需译码器,但有较多的地址重叠区。

2、熟悉常用的程序存储器和数据存储器的译码方法

•地址容量要匹配(扩几片)

•地址编排要符合要求(不要重叠)

•地址译码要恰当(逻辑门组合或接受译码器)

•片选信号要连好(有的器件不止一个CS信号,高、低有效电平也不一徉,不要

漏了或者连错•)

•读写信号连接妥当(RAM有读和写信号,ROM只有读信号)

•留意M/IO*信号的极性(不要把I/O和MEM寻址的极性混淆了)

3、熟悉3/8、2/4译码器的用法。

(书本P191例题和的题)

第六章微机接口技术基础

第一节I/O接口的概念

1、I/O接口的作用

(1)匹配外设与主机间的数据形式

(2)匹配外设与主机间的工作速度

(3)在主机与外设之间传输限制信息

其次节输入/输出限制方式

1、无条件程序传送方式(同步方式)

2、程序查询传送方式(异步方式)

3、中断限制传送方式

(这3种传输方式各自的特点及适用场合要知道,书上P205〜207的3个例子,包括图,

要会驾驭)

4、干脆存储器存取(DMA)传送方式

第三节中断技术

一、中断的类型

PC机中各种类型的中断共有256个,并对它们进行了统一的编号,称为中断类型号

1、内中断

(1)微处理器中断

①0号中断(除数为0)

②1号中断(单步执行程序)

③4号中断(运算溢出)

④3号中断(断点处理)

(2)不行屏蔽中断NMI

(3)保留的微处理器中断(不要求)

2、外中断

外中断由NMI和INTR两个引脚引入。

可屏蔽外中断INTR的特点:

①INTR为电平触发

②外中断可多级排优

③外中断可用指令屏蔽

④外中断可以嵌套

⑤外中断响应条件的修正(重点驾驭)

在IF=1,任何一条指令执行完时,CPU将检测引脚INTR,以便响应外中断。

3、软中断

由中断指令INTn引发的中断称为软中断。

4、保留中断

5、各类中断的优先级

高-----------------------►低

除数0,INTn,断点,溢出

NMI

INTR

低单步

二、中断向量表

1、中断向量表

在8086系统中,内存最低端的1K字节地址范围内(从00000-003FFH),放置256

个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,

地址较高的两个字节放入口地址的段地址(CS),地址较低的两个字节放偏移地址(IP)o

中断向量表中的存储地址=中断类型码nx4

2、中断服务程序的执行

(1)将标记寄存器F入栈:

(2)清除中断标记(IF=0)、单步标记(TF=0);

(3)将程序当前代码地址CS和指令偏移地址IP依次入栈;

(4)依据中断号n,计算中断向量的首地址——0000:n*4;

(5)依据中断向量首地址,取出4个字节的中断向量,并分别置入CS和IP中,CPU便

转而执行相应的中断服务程序;

(6)执行中断服务程序;

(7)调用中断返回指令IRET,使堆栈中保存的断点值和标记值分别装入IP,CS和标记

寄存器,返回发生中断的断点。

3、可屏蔽外中断的执行过程

(1)PC机的外设输出中断请求信号至8259A中断限制器,通过优先级判决后,向CPU

发中断请求信号INTR。

(2)CPU响应中断,连续发生两个中断响应脉冲INTA,完成中断应答并获得中断号no

(3)CPU将收到的中断号n乘4作为中断向量地址。

(4)CPU屏蔽中断,将中断现场状态字(F,IP,CS)压入堆栈,将标记寄存器F中的

IF和TF清0,禁止可屏蔽的和单步的中断,将断点的CS和IP寄存器内容被压入堆

栈,查询中断向量表,在地址为4Xn和4X11+2处依次取得IP和CS的值。

(5)CPU以CS值为段地址、IP为偏移地址转入中断服务程序。

4、中断服务程序中须要完成的工作

(1)选择一个中断向量。假如接受硬件中断,则要运用硬件确定的中断向量。(对于除法

错误,单步中断,非屏蔽中断,断点中断和溢出中断分别由CPU芯片内的硬件自供

应类型号0〜4,外部中断INTR通过中断限制器(8259)获得中断类型号,假如接

受软件中断,执行INTn指令的方式来执行中断服务程序,则可以在系统预留给用

户的中断向量号中选某一个中断向量);

(2)将中断子程序的入口地址置入中断向量表的相应表项中。(两种方法:用MOV指令

将中断服务子程序入口相对地址存放在物理地址为4Xn的字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论