分享
 
 
 

80386ASM程序设计基础(三)

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在接下来的四篇里将介绍80386的汇编指令及用法,并和8086的指令进行比较。

80386的指令集包含了8086/8088,80186,80286的指令集,可以分为几个大类:数据传送指令,算术运算/逻辑运算指令,移位指令,控制转移指令,串操作指令,高级语言支持的指令,条件字节设置指令,位操作指令,处理器控制指令和保护方式指令。高级语言支持指令始于80186,保护方式指令始于80286,条件字节设置指令和位操作指令是80386新增的。

本篇主要介绍数据传送指令,数据传送指令可以分为:通用数据传送,累加器专用传送,地址传送,标志传送,分别介绍如下:

A.数值传送指令MOV,MOVZX,MOVSX,XCHG,PUSH,PUSHA,PUSHAD,POPA,POPAD,

a.MOV,指令和8086相似,不过它支持32位操作。

b.MOVZX,零扩展传送,格式--MOVZX DST,SRC,表示将源操作送给目的操作数,目的操作数空出的部分用0填补。

c.MOVSX,符号扩展传送,格式--MOVSX DST,SRC,表示将源操作送给目的操作数,目的操作数空出的部分用SRC的符号位来填补,举个简单的例子来演示:

MOV DL,90H;

MOVSX AX,DL;AX=FF90H

MOVZX AX,DL;AX=0090H

MOVSX ESI,DL;ESI=FFFFFF90H

MOVZX ESI,DL;ESI=00000090H

事实上在8086中也有两条指令CBW,CWD可以对操作数进行扩展。MOVSX可以对有符号数进行扩展,MOVZX可以对无符号数进行扩展,看看CBW,CWD的用法:

CBW将字节数据扩展成字,符号位扩展到AH中

CWD将字数据扩展成双字,符号位放到DX中

MOV AL,70H;

CBW;//AX=0070

CWD;//DX=0000,AX=0070

d.XCHG,功能和8080相同,不过它支持8位,16位,32位操作,下面的语句均是合法的。

XCHG AH,AL

XCHG AX,AL

XCHG ESI,EDI

XCHG ESI,[EBX+EDI+1000H]

e.PUSH,和8086不同的是,它支持立即数入栈,8位入栈,当然还有32位入栈,下面的语句均是合法的。

PUSH AL

PUSH BH

PUSH 100H

PUSH EAX

PUSH EBX

PUSH DWORD PTR [EAX]

f.POP,功能和用法和8086一样。

g.PUSHA,将8个通用寄存器全部进栈,进栈顺序为:AX,CX,DX,BX,SP,BP,SI,DI,然后SP指针寄存减16,不过SP入栈的内容是PUSHA指令执行前的内容。

h.POPA,8个通用寄存器全部出栈,堆栈指针寄存器不是堆栈中弹出的内容,而是加16而得到的,虽然这样得到的值和从堆栈中弹出来的内容一样,但物理意义不一样。

i.PUSHAD,将8个32位通用寄存器全部入栈,入栈顺序EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,ESP的内容是执行指令PUSHAD之前的内容

j.POPAD,8个32位通寄存器全部出栈,ESP的内容参见h

B.地址传送指令LEA,LDS,LES,LFS,LGS,LSS

a.LEA,取有效地址,功能,用法与8086相同,不过它支持32位操作。规则:目的操作必须是16位或32位通用寄存器,当目的操作数是16位时,那么只装入有效地址的低16位。事实上LEA指令相当于伪指令OFFSET,看例子:

MOV EAX,12345678H

MOV EBX,56784321H

LEA ECX,[EAX+EBX];ECX=99999999H

b.LDS,装入指针,功能,用法与8086相同,不过它支持32位操作。格式:LDS REG,OPRD。规则,目的寄存器必须是16位或32位的通用寄存器,OPRD必须是内存单元,不可以是立即数。如果目的寄存器是16位,那么源操作数OPRD含32位指针;如果目的寄存器是32位,那么源操作数有48位指针。该指令将目的操作数OPRD所指向的内存单存的4个或6个连续字节的内容送给助记符指令中指定的DS段寄存器和指令中目的寄存器。比如:

LDS EAX,[1000H];这表明将偏移地址为1000,1001H这两个字节单元的内容送给段寄存器DS,将偏移地址1002,1003,1004,1005四个字节单元的内容送往EAX。

LDS AX,[1000H];这表明将偏移地址为1000,1001H这两个字节单元的内容送给段寄存器DS,将偏移地址1002,1003H两个字节单元的内容送往EAX。

c.LES,同LDS,不过段寄存器是ES。

d.LFS,同LDS,不过段寄存器是FS。

e.LGS,同LDS,不过段寄存器是GS。

h.LSS,同LDS,不过段寄存器是SS。

C.标志传送指令LAHF,SAHF,PUSHF,PUSHFD,POPF,POPFD

a.LAHF,将标志寄存器的低8位送至AH中,包括SF,ZF,ZF,PF,CF。

b.SAHF,与i的过程恰好相反

c.PUSHF,将标志寄存器的EFLAGS低16位内容入栈,和8086相同

d.PUSHFD,将标志寄存器EFLAGS的内容入栈

e.POPF,将栈顶的一个字弹出,并将它送到标志寄存器EFLAGS的低16位

f.POPFD,将栈顶的两个字弹出,并将它送到标志寄存器EFLAGS

D.累加器传送指令IN,OUT,XLAT

a.IN,和8086相同,但可以输入一个双字节,同样如果端口的范围位于00H-FFH,可以直接用,如果超出这个范围,则先要将端口号送至DX,下面的语句是合法的:

IN AL,20H;从20H端口读入一个字节

IN AX,20H;从20H端口读入一个字

MOV DX,0378H

IN EAX,DX;从20H端口读两个字节

b.OUT,和8086相同,但可以输出一个双字节,同样如果端口的范围位于00H-FFH,可以直接用,如果超出这个范围,则先要将端口号送至DX,下面的语句是合法的:

OUT 20H,AL;从20H端口输出一个字节

IN 20H,AX;从20H端口输出一个字

MOV DX,0378H

IN EAX,DX;从20H端口输出两个字

c.XLAT,查表指令,功能和用法与8086相同,不过基址寄存器用的是EBX,来看看XLAT的实现过程:XLAT以BX作为基址寄存器,以AL作为变址寄存进器对指定的缓冲区进行查表,将AL指定位置的内容送往AL,比如说我们在MS-DOS方式写一个小程序:

C:\>Debug

-A100

MOV BX,0120

SUB AL,AL

MOV DL,AL

MOV AH,2

INT 21

MOV AH,4C

INT 21

INT 20

-E120 'ABCDEFGHIJKLLMMDDKDJDK'

=G100

屏幕上会显示A,如果AL=3,那么屏幕会显示D

以上所有的指令均不影响EFLAGS的各标志位。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有