汇编语言基础课件_第1页
汇编语言基础课件_第2页
汇编语言基础课件_第3页
汇编语言基础课件_第4页
汇编语言基础课件_第5页
已阅读5页,还剩251页未读 继续免费阅读

下载本文档

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

文档简介

1

基础知识

数制

数制之间的转换

运算

原码反码补码

ASCII码

BCD码

数码之间的处理关系

从不同的角度看待一个二进制数2预备知识22=424=1628=256210=1024220=10485761K=210=1024(Kilo)1M=1024K=220

(Mega)1G=1024M=230(Giga)1个二进制位:bit(比特)8个二进制位:Byte(字节)1Byte=8bit2个字节:Word(字)1Word=2Byte=16bit31.数制

十进制:基数为10,逢十进一543.12=5×102+4×101+3×100+1×10-1+2×10-2

二进制:基数为2,逢二进一1101112=

1×25

+1×24

+1×22+1×21+1×20

=5510

十六进制:基数为16,逢十六进一1001,0001,1000,01119187=9×163+1×162+8×161+7×160

八进制:基数为8,逢八进一4数制基数数码二进制Binary20,1八进制Octal80,1,2,3,4,5,6,7十进制Decimal100,1,2,3,4,5,6,7,8,9十六进制Hexadecimal160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F5

二进制十进制

110111.11B=1×25+1×24+1×22+1×21+1×20+1×2-1+1×2-2=55.75D

整数部分:除基取余法

例:N=55D

55/2=27余数=1(a0)27/2=13余数=1(a1)13/2=6余数=1(a2)6/2=3余数=0(a3)3/2=1余数=1(a4) 1/2=0余数=1(a5)

N=55D=110111B

2.数制之间的转换6小数部分:乘基取整法

例:N=55D

0.425×2=0.85整数=0 0.85×2=1.70整数=1 0.70×2=1.40 整数=1 0.40×2=0.80 整数=0 0.80×2=1.60整数=1

N=0.425D=0.01101B7

二进制十六进制

0011010110111111

35BF∴

0011,0101,1011,1111B=35BFH

A19C

1010000110011100∴A19CH=1010,0001,1001,1100B8

十六进制十进制

BF3CH=11163+15162+3161+12160

降幂法除法

例:399D=?H39914315---256161

18F

∴399D=18FH9

算术运算二进制

加法规则乘法规则

0+0=000=00+1=101=01+0=110=01+1=0(进位1)11=1十六进制05C3H3D25H+3D25H-05C3H42E8H3762H3.运算(算术运算和逻辑运算)10

逻辑运算(按位bit操作)“非”运算(NOT)A

A0110“与”运算(AND)ABA

B000010100111“异或”运算(XOR)ABA

B000011101110“或”运算(OR)ABA

B00001110111111例:X=00FFHY=5555H,求Z=X

Y=?X=0000000011111111B

Y=0101010101010101B

Z=0101010110101010B

Z=55AAH124.原码反码补码

数(机器数)的表示:计算机中的数用二进制表示,数的符号也用二进制表示。机器字长:指参与运算的数的基本位数,标志着计算精度,一般是字节的整数倍(8位、16位、32位等)。假设机器字长n为8位76543210符号位数值位假设机器字长n为16位符号位数值位1514131211109876543210符号位=0表示正数符号位=1表示负数13常用表示法

——原码反码补码原码表示法:符号+绝对值例:n=8bit[+3]原码=0000,0011=03H[-3]原码=1000,0011=83H[+0]原码=0000,0000=00H[-0]原码=1000,0000=80H

0的表示不唯一14反码表示法:正数的反码同原码,负数的反码数值位与原码相反例:n=8bit[+5]反码=0000,0101=05H[-5]反码=1111,1010=FAH[+0]反码=0000,0000=00H[-0]反码=1111,1111=FFH

0的表示不唯一15补码表示法:IBM-PC采用补码表示法正数的补码:同原码

[+1]补码=00000001=01H[+127]补码=01111111=7FH[+0]补码=00000000=00H负数的补码:(1)写出与该负数相对应的正数的补码(2)按位求反(3)末位加一例:机器字长8位,[-46]补码=?[46]补码=001011101101000111010010=D2H

机器字长16位,[-46]补码=FFD2H

按位求反末位加一16[-1]补码=11111111=FFH[-127]补码=10000001=81H[-0]补码=00000000=00Hn位补码的表数范围:-2n-1

N

2n-1-1n=8-128

N

127n=16-32768

N

3276717n位二进制补码的表数范围十进制二进制十六进制十进制十六进制

n=8n=16+127011111117F+327677FFF+126011111107E+327667FFE......……...+20000001002+20002+10000000101+100010000000000000000-111111111FF-1FFFF-211111110FE-2FFFE......……...-1261000001082-327668002-1271000000181-327678001-1281000000080-32768800018补码的加法和减法求补运算

:对一个二进制数按位求反、末位加一[X]补码

[-X]补码

[X]补码加法规则:[X+Y]补码=[X]补码+[Y]补码减法规则:[X-Y]补码=[X]补码+[-Y]补码补码减法可转换为补码加法符号位参加运算,能自动得到正确结果。无符号整数:表数范围0

N

2n-1n=80

N

255n=160

N

6553519ASCII码:用一个字节来表示一个字符,低7位为字符的ASCII值,最高位一般用作校验位。例:‘A’41H‘a’61H‘1’31H

换行0AH

回车0DH

空格20H5.字符的ASCII码20

BCD码的表示:一位十进制的数用四位二进制数码来表示6.BCD码例如:DBCD000001000120010:8100091001特点:每4位表示是二进制的数,4位与4位之间是十进制的数即用二进制的数码表示十进制的数。例如:16=00010110BCD=00010000B98=10011000BCD21BCD码在机内存放形式:非压缩形式

压缩形式0000100000001001低高10011000BCD码的运算:压缩的BCD码的加法校正22例:37+47=8437的BCD码为00110111B、47的BCD为01000111B第一步,先进行二进制加法 00110111 + 0100011101111110第二步,对二进制数的相加结果进行校正由于运算结果01111110中的低4位大于9,故应在低四位加6 01111110+0000011010000100最终结果为84H,既是84D的BCD码,结果正确。23压缩的BCD码的减法校正例:84-47=3784的BCD码(压缩)为10000100B、47的BCD(压缩)为01000111B第一步,先进行二进制减法 10000100 - 0100011100111101第二步,对二进制数的相减结果进行校正由于在运算中低4位向高4位借了1,故应在低四位减6 00111101-0000011000110111最终结果为37H,既是37D的BCD码,结果正确。24非压缩的BCD码的加法校正例1.3.337+47=84第一步,先进行二进制加法 0000001100000111 + 00000100000001110000011100001110第二步,对二进制数的相加结果进行校正由于运算结果中的低字节的低4位大于9,故应加6,而有辅助进位位,直接将这一进位位加到高字节。 0000011100001110+1110000010000000010025最终结果为84H,既是84D的BCD码,结果正确。非压缩的BCD码的减法校正例1.3.484-47=37第一步,先进行二进制减法 0000100000000100 - 00000100000001110000001111111101第二步,对二进制数的相减结果进行校正由于在运算后,低字节的低4位大于9,所以应减6。 0000001111111101-110000000111111011126然后将结果的低字节的高四位清0,结果为0307H,是37D的非压缩的BCD码,结果正确。BCD码的乘法校正例:6×7=42第一步,先进行二进制乘法 00000110 ×0000011111011001100000101010第二步,对二进制数的相成结果进行校正00101010÷1010=00000100余0000001027校正的实质是对二进制数的乘积除以10D,商为乘积的高位,余数为乘积的低位,故最终结果为42D。BCD码的除法校正例:45÷7=6余3

BCD码的除法与加、减、乘不同,是先校正,再做二进制除。校正的实质是将被除数(十进制数)转换为二进制数。如上例,将45的高位乘以10D再加上低位转换为二进制数。第一步,先校正00000100×1010+00000101=0000000000101101第二步,作除法0000000000101101÷00000111=00000110余0000001128结果为6余3。在Intel8088/8086中,有专门的BCD码校正指令来完成校正操作。

29数的输入:每位二进制数用ASCII码输入BCD码存放二进制数值存放减30H十转二处理用十进制调整指令数的输出:二进制数BCDASCII码按位输出二转十(除10取余直至商为0)各位加30H非压缩7.数码之间的处理关系软件:系统软件(核心是操作系统OS)

MASM.EXE

TASM.EXE

LINK.EXE

TLINK.EXE

DEBUG.EXE

用户软件

1981年推出CPU采用芯片8088,机器字长16位,

数据线8根,地址线20根,1MRAM,40KROMIBMPC

2.2微处理器的结构IBMPC机的CPU组成:

8086/8088的寄存器组(14个寄存器):

数据寄存器(4个通用寄存器)

指针及变址寄存器

段寄存器

控制寄存器算术逻辑部件ALU控制逻辑工作寄存器图2.2:8086处理器功能框图功能:存放操作数或运算结果等信息组成:AX:AH+AL--累加器

BX:BH+BL--基址寄存器

CX:CH+CL--计数器

DX:DH+DL--数据寄存器ABCDABCDX:字操作寄存器(16位)H或ABCDL为字节操作寄存器(8位)该寄存器组既可作16位寄存器(AX,BX,CX,DX),又可作按高8位和低8位作8位寄存器使用。即如:AH

ALAX1570字寄存器低字节(8位)高字节(8位)字节寄存器数据寄存器功能:存放操作数的偏移地址组成:5个16位寄存器组成:

SI:源变址寄存器

DI:目的变址寄存器

SP:栈顶地址寄存器(相对于SS是偏移地址):SP是栈顶指针

BP:对堆栈操作的基址寄存器

BX:变址器由于操作数的偏移地址只能用16位二进制数表示,因此:SI,DI,SP,BP都是16位寄存器,而不能作8位寄存器使用。说明:(1)仅SI,DI,BX,BP能作基址或变址寄存器,SI,DI作变址器,BX,BP

作变址器又作基址器(2)SI,DI,BP作数据寄存器使用时,用来保存操作数和运算结果,只能作16位字寄存器而不是8位寄存器。指针及变址寄存器

IBMPC中有4个专门存放段地址的段寄存器(16位)代码段寄存器CS数据段寄存器DS堆栈段寄存器SS附加段寄存器ES例:(DS)=3000H,EA=1234H,

物理地址=16d

(DS)+EA=31234H存储器8K代码2K数据256堆栈02000H04800H04000H0200H0400H0480H段寄存器

IP指令指针寄存器(存放代码段中的偏移地址,始终指向下一条指令的首地址)标志寄存器FLAGS:包含了9个标志位,由6个状态标志位和3个控制标志位构成,主要用于反映处理器的状态和运算结果的某些特征。各标志位在标志寄存器中的位置如下所示:

控制寄存器1.进位位CF(CF)=1:当结果最高位(字节第七位,字第15位)产生一个进位和错位0:不产生进位或借位2.溢出位OF(OF)=1:有溢出,运算结果超过了范围如:带符号数:字节:-128-127D

字:-32768-327670:无溢出注意:溢出与进位两个概念是不同的。例如:01100100+0110010011001000=[+100]补=64H=[+100]补=64H+为+200D超出+127两个正数相加变成了负数故溢出则(OF)=1,(CF)=0,称为无进位的溢出又例如:10101011+1111111110101010CF10ABH=[-55H]补=-850FFH=[-1]补=-10AAH=[-56H]补=-86+后为-86则:无溢出但有进位位:(OF)=0,(CF)=13.符号标志位SF(SF)=1:最高位为1:负数0:最高位为0:正数4.零标志位ZF(ZF)=1:运算结果为00:运算结果不为05.辅助进位标志位AF(AF)=1:字节

字0……7430有进位或借位158706.奇偶标志位PF(PF)=1:当运算结果(指低8位)中的‘1’的个数为偶数0:运算结果(指低8位)中的‘1’的个数为奇数控制位:由指令设置,使系统设置情况操作7.方向控制位DF(DF)置1:从高地址单元到低地址单元处理串置0:从低地址单元到高地址单元处理串8.中断允许控制位IF(IF)置1开中断:允许CPU接受外部中断请求置0关中断:禁止CPU接受外部中断请求9.追踪控制位TF(TF)置1:CPU处于单步执行程序状态,即CPU每执行一条指令产生1号中断。用于调试程序置0:CPU连续执行程序32位寄存器2.3存储器存储器是用来存放程序、数据、中间结果和最终结果的记忆装置。

存储单元的地址和内容

存储器以字节(8bit)为单位存储信息

每个字节单元有一个地址,从0编号,顺序加1

地址也用二进制数表示(无符号整数,写成十六进制)

16位二进制数可表示216=65536=64K个地址0000H~FFFFH

字长16位,一个字要占用相继的两个字节

低位字节存入低地址,高位字节存入高地址

机器以偶地址访问(读/写)存储器

字单元地址用它的低地址来表示76543210100111110000H(0000H)=9FH001001100001H(0001H)=26H000111100002H110101110003H存储器1514131211109876543210字高位字节低位字节1001111100100110(0000H)=269FH

存储器地址的分段

20根地址线220=1024K=1M=1048576地址范围00000H~FFFFFH

小段:每16个字节为一小段,共有64K个小段

00000H~0000FH00010H~0001FH00020H~0002FH…FFFF0H~FFFFFH

存储器分段:段起始地址必须是某一小段的首地址,段的大小可以是64K范围内的任意字节。物理地址:每个存储单元的唯一的20位地址

段基值:段起始地址的高16位

偏移量:段内相对于段起始地址的位移量(16位)(有效地址EA)

物理地址=16d

段基值+偏移量16位段基值16位偏移量0000+20位物理地址

IBMPC中有4个专门存放段地址的段寄存器(16位)代码段寄存器CS数据段寄存器DS堆栈段寄存器SS附加段寄存器ES例:(DS)=3000H,EA=1234H,

物理地址=16d

(DS)+EA=31234H存储器8K代码2K数据256堆栈02000H04800H04000H0200H0400H0480H保护模式下的存储管理堆栈在内存中开辟的一片连续的存储区作用:存放数据特点:(1)一端固定,另一端活动(2)存取数据的原则:“先进后出”(3)进或出栈只能是字数据,不能是字节数据(4)栈的最大容量64KB(5)SP总是指向栈顶,它的内容是相对SS的地址偏移量(6)数据入栈时,栈顶均由高地址向低地址变化数据出栈时,栈顶均由低地址向高地址变化2.4堆栈2.出栈指令

格式:POPDST;DST表示的目的操作数地址功能:将当前栈顶一个字数据弹出到16位寄存器(除CS外)或内存单元中操作:([SP])DST低8位

(SP)+1SP([SP])DST高8位

(SP)+1SP例:POPBXPOPDL×栈顶操作指令1.进栈指令

格式:PUSHSRC;SRC表示源操作数地址功能:将SRC表示的寄存器或内存单元中的字数据压入栈顶操作:(SP)-1SP;修改栈顶指针的内容(SRC)高8位↓(SP);送高8位字节数据(SP)-1SP;又修改栈顶指针的内容(SRC)低8位↓(SP);送低8位字节数据例:PUSHAXPUSHAL×

50一.立即寻址方式格式:n

;n为一常数(立即数)特点:n

本身是需要寻找的操作对象。它紧跟指令存于内存代码段中。例:MOVBX,10

MOVAH,‘A’

MOVAX,3064H3.1寻址方式51内存::MOV64H30H:低高代码段CPU:

AX

AHAL注:•

立即数只能作双操作数指令的源操作数,不能作目的操作数。

立即数不能作单操作数指令的操作数。如:MOV100H,AX×INC50

×

立即数送入目的操作数中,注意溢出如:MOVAL,-90H×

52二.直接寻址方式•

格式:段寄存器:[EA](其中:段寄存器为DS,ES,SS之一)或含有变量的地址表达式。•

特点:

操作数的地址偏移量EA,或变量地址表达式的EA直接包含在指令中,与操作码一起放在代码段中。

操作数对象一般不作特别说明,存放在当前数据段中,其物理地址求法为:(DS)0000+EA

4例:MOVAX,DS:[2000H];((DS)+2000H)AX

设执行前(DS)=3000H4(32000H)=2415H

则执行后(32000H)字

AX即(AX)=2415H

MOVAL,DS:[2000H]

则(32000H)字节

AL即(AL)=15H53

:

MOV0000

00H

4

20H+::

15H

32000H

24H

32001H:代码段数据段3000H内存这说明:•段寄存器:[EA]这种直接寻址方式没有类型;•含有变量地址表达式的形式有类型,其类型由变量类型决定。例:MOVAX,ES:[2000H];((ES)+2000H)AX

段跨越符4

MOVSS:[1000H],BX;(BX)

(SS)+1000H

4

MOVBUF,AXMOV[BUF],AXDS54寄存器寻址方式*—操作数在指定的寄存器中

MOVAX,BXMOVAL,BH*字节寄存器只有AHALBHBLCHCLDHDL*SRC和DST的字长一致

MOVAH,BX*CS不能用MOV指令改变

MOVCS,AX三、寄存器寻址方式55格式:[R];其中R为BX,BP,SI,DI之一,不允许是其它寄存器。特点:操作对象在内存中,操作对象的EA在BX,BP,SI,DI之一中。(不在内存)即:EA=(BX)(BP)(SI)(DI)

注:(1)若选择[BX],[SI],[DI]之一,且缺省段跨越符,则对象在当前的数据段中;四、寄存器间接寻址方式56例:MOVAX,[BX];((DS)+(BX))AX

4

若执行前(DS)=2000H,(BX)=1000H:MOVAX,[BX]DSBX::40A0H21000H+50H21001H:

数据段2000H1000H50H0A0H内存AX(2)若缺省段跨越符,且BP作间址寄存器,则对象存放在当前堆栈段中。如:MOVBX,[BP];((SS)+(BP))BX

457(3)若指定段跨越符,则不管BP,BX,SI,DI之一作变址器,都取相应段中数据。如:MOVES:[BP],AX;(AX)(ES)+(BP)MOVAX,ES:[BX];((ES)+(BX))AX

4注:•

间址器一定要是BP,BX,SI,DI之一如:MOVCX,[AX]×

间接寻址方式表示对象的地址,并不能表示对象的类型。58格式:X[R];其中R为BX,BP,SI,DI之一。

X为一整常数或变量地址表达式。特点:•

操作对象在内存中

EA为R的内容和X之和(即:X在代码段中,EA另一部分在R中)。EA=X+(SI)X+(DI)X+(BX)X+(BP)缺省段跨越符的物理地址(DS)+(SI)+X

4(DI)+X(BX)+X(SS)+(BP)+X

4五.相对寻址方式59例:MOVCX,-6[BX];((DS)+(BX)-6)CX

设执行前:(BX)=16H,(DS)=2000H,(20010H)=3789H

执行:执行后(CX)=3789H,其他寄存器内容不变。:DSBX

MOVCX

OFFH

OFAH+:89H20010H37H20011H:代码段数据段2000H16H-6例:MOV[BX+7],BXMOVDL,4[AX]×MOVBX,ES:ABC[SI];其中ABC为变量名,它表示变量到所在段段首址的EA60格式:[BR+IR]

其中:BR为基址寄存器,仅为BX和BP之一;

IR为变址寄存器,仅为SI和DI之一。特点:•

操作对象在内存中。

操作数的EA=(BX)+(SI)或(DI)(BP)+(SI)或(DI)

•缺省段跨越符,其物理地址:

(DS)+(BX)+(SI)或DI

4(SS)+(BP)+(SI)或DI

4例:MOVAX,[BX+BP]×MOV[SI+DI],CX×MOV[BX+CX],AX×六.基址变址寻址方式61例:MOVAX,[BX+DI]

MOVAX,[BX][DI]

设执行前(DS)=2100H(BX)=158H(DI)=10A5H(221FDH)=1234HEA=158H+10A5H=11FDH∴物理地址:(DS)+EA=21000H+11FDH=221FDH

4:DSBXDI指令码

:4

:+34H221FDH12H221FEH:2100H158H10A5H数据段执行后:(AX)=1234H当MOVAL,[BX+DI];(221FDH)字节=34H

AL即(AL)=34H62格式:X[BR+IR]

其中:BR为基址器,仅为BX,BP之一;

IR为变址器,仅为SI,DI之;

X为一整常数或已定义的变量名。特点:

•对象在内存中;

•操作数的EA=(BX)+(SI)或(DI)+X(X为变量名,则该变量名到所在段的段首的字节个数)(BP)+(SI)或(DI)+X七.相对基址变址寻址方式63例:MOVAX,8[BX+SI]

执行前:(AX)=45H,(BX)=30H,(SI)=20H,(DS)=1000H(10058H)=99H:

指令码

8::99H0:代码段数据段

DS

BX

SI

+10058H10059H

执行后:(10058H)AX(AX)=99H1000H30H20H例:MOVDX,M[BX+DI];设M已定义在数据段中

MOVSS:[BX+SI+7],CX;物理地址=(SS)+(BX)+(SI)+7

464习题:1.分别指出下列指令中源操作数和目的操作数的寻址方式

①MOVSI,’C’④ADDCX,DS:[10H]②MOV[BX+3],AX⑤MOVDL,[BP+DI]③SUB[BX][SI],AL⑥MOV[BX],AX2.指出下列各寻址中的错误,并说明原因

①MOV100H,AX④MOV[BX+BP],[SI]②MOV[CX],AH⑤ADDAX,[DI+SI]③ADDAX,BL⑥MOVAH,1000⑦POPCL3.已(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=0ADH,(BX)=100H,(BP)=10H,试指出下列源操作数的寻址方式是什么?其物理地址值是什?(1)MOVAX,DS:[100H](2)MOVBX,[SI](3)MOVCX,[BX+10H](4)MOVAX,[BX][SI](5)MOVCL,[BP+4](6)MOVCH,ES:[BP+SI]65

数据传送指令

算术运算指令

逻辑运算指令

串操作指令

程序转移指令

处理机控制指令注意:1.指令的基本功能

2.指令的执行对标志位的影响

3.对寻址方式或寄存器使用的限制和隐含使用的情况3.2指令系统66

功能:负责把数据,地址或立即数送到寄存器或内存单元中。

1.传送指令:MOV

格式:MOVDEST,SC功能:(SRC)DEST立即数传送到通用寄存器或存储单元MOVCL,25H;字节传送MOVAX,4321H;字传送MOVDA_BYTE,34H;字节传送

MOVDA_WORD,4321H;字传送

注意:立即数只能出现在源操作数位置,不能作为目的操作数

一.数据传送指令67寄存器之间的传送MOVBL,DL;字节传送MOVDX,CX;字传送MOVES,AX;通用寄存器与段寄存器之间传送注意:段寄存器CS仅只能作源操作数,不能作目的操作数。

68寄存器与存储单元之间的传送MOVDL,DA_BYTE;字节传送MOVAX,DA_WORD;字传送MOVDA_BYTE,CL;字节传送MOVDA_WORD,DX;字传送注意:两个存储单元之间不能用一条MOV指令直接完成数据传送。立即数不能直接传送给段寄存器,且段寄存器之间亦不能进行直接传送。69立即数存储器通用寄存器AXBXCXDXBPSPSIDICS段寄存器DSESSS图3.7MOV指令的数据传送方向70格式:XCHGDEST,SRC功能:(SRC)↔(DEST)例:XCHGAL,AH;(AL)↔(AH)注:SRC或DEST均不能为立即数二.交换指令71

标志送AH指令:LAHF

执行操作:(AH)

(PSW的低字节)

AH送标志寄存器指令:SAHF

执行操作:(PSW的低字节)

(AH)

标志进栈指令:PUSHF

执行操作:(SP)

(SP)-2((SP)+1,(SP))

(PSW)

标志出栈指令:POPF

执行操作:(PSW)

(SP)+1,(SP))(SP)

(SP)+2*影响标志位三.标志寄存器传送指令72

有效地址送寄存器指令:LEAREG,SRC

执行操作:(REG)

SRC

指针送寄存器和DS指令:LDSREG,SRC

执行操作:(REG)

(SRC)(DS)

(SRC+2)4个相继字节

寄存器(通常是SI)、DS

指针送寄存器和ES指令:LESREG,SRC

执行操作:(REG)

(SRC)(ES)

(SRC+2)4个相继字节

寄存器(通常是DI)、ES四.地址传送指令73例:LEABX,[BX+SI+0F62H]

例:LDSSI,[10H]例:LESDI,[BX]例:(DS):1000H40H00H

00H

30H

TABLEMOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLDSBX,TABLE;(BX)=0040H;(DS)=3000HLESBX,TABLE;(BX)=0040H;(ES)=3000H注意:

*

不影响标志位

*REG不能是段寄存器

*SRC必须为存储器寻址方式74换码指令:XLAT或XLATOPR执行操作:(AL)

((BX)+(AL))例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE

指令执行后(AL)=33H注意:*

不影响标志位*字节表格(长度不超过256)

首地址(BX)*

需转换代码(AL)(BX)

30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H五.换码指令75

加法指令

减法指令

乘法指令

除法指令

十进制调整指令

3.2.2算术指令76

加法指令

加法指令:ADDDST,SRC

执行操作:(DST)

(SRC)+(DST)

带进位加法指令:ADCDST,SRC

执行操作:(DST)

(SRC)+(DST)+CF

加1指令:INCOPR

执行操作:(OPR)

(OPR)+1注意:

*

除INC指令不影响CF标志外,均对条件标志位有影响。77加法指令对条件标志位(CF/OF/ZF/SF)的影响:CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。1结果为负0否则SF=1结果为00否则ZF=1和的最高有效位有向高位的进位0否则CF=1两个操作数符号相同,而结果符号与之相反0否则OF=78无符号数溢出00000111+1111101100000010带:(+7)+(-5)=+2OF=0无:7+251=2CF=1带符号数和无符号数都不溢出00000100+0000101100001111带:(+4)+(+11)=+15OF=0无:4+11=15CF=0带符号数溢出00001001+0111110010000101带:(+9)+(+124)=-123OF=1无:9+124=133CF=0带符号数和无符号数都溢出10000111+1111010101111100带:(-121)+(-11)=+124OF=1无:135+245=124CF=1n=8bit带符号数(-128~127)无符号数(0~255)79例:双精度数的加法

(DX)=0002H(AX)=0F365H

(BX)=0005H(CX)=0E024H

指令序列

(1)ADDAX,CX

(2)ADCDX,BX

(1)执行后,(AX)=0D389HCF=1OF=0SF=1ZF=0

(2)执行后,(DX)=0008HCF=0OF=0SF=0ZF=080

减法指令

减法指令:SUBDST,SRC

执行操作:(DST)

(DST)-(SRC)

带借位减法指令:SBBDST,SRC

执行操作:(DST)

(DST)-(SRC)-CF

减1指令:DECOPR

执行操作:(OPR)

(OPR)-1

求补指令:NEGOPR

执行操作:(OPR)

-(OPR)

比较指令:CMPOPR1,OPR2

执行操作:(OPR1)-(OPR2)注意:*

除DEC指令不影响

CF标志外,均对条件标志位有影响。81减法指令对条件标志位(CF/OF/ZF/SF)的影响:CF位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。NEG指令对CF/OF的影响:CF位:操作数为0时,求补的结果使CF=0,否则CF=1。OF位:字节运算对-128求补或字运算对-32768求补时OF=1,否则OF=0。1被减数的最高有效位有向高位的借位0否则CF=1两个操作数符号相反,而结果的符号与减数相同0否则OF=1减法转换为加法运算时无进位0否则CF=或82例:x、y、z均为双精度数,分别存放在地址为X,X+2;

Y,Y+2;Z,Z+2的存储单元中,用指令序列实现

w

x+y+24-z,并用W,W+2单元存放w。

MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24

温馨提示

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

评论

0/150

提交评论