云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 汇编语言指令详解

汇编语言指令详解

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 17:40:17

交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 例如: XCHG AL,CL

XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH

4.累加器专用传送指令

有三种,输入、输出和查表指令。前两种又称为输入输出指令。 ⑴ IN 指令

一般格式:IN AL,n ; B AL←[n]

IN AX,n ; W AX←[n+1][n] IN AL,DX ; B AL←[DX] IN AX,DX ; W AX←[DX+1][DX]

功能:从I/O端口输入数据至AL或AX。

输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。 ⑵ OUT 指令

一般格式:OUT n,AL ; B AL→[n] OUT n,AX ; W AX→[n+1][n]

OUT DX,AL ; B AL→[DX] OUT DX,AX ; W AX→[DX+1][DX]

功能:将AL或AX的内容输出至I/O端口。

该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。 ⑶ XLAT指令

一般格式:XLAT ; AL=(DX)×16+(BX)+(AL)) 功能:完成一个字节的查表转换。

要求:①寄存器AL的内容作为一个256字节的表的下标。②表的基地址在BX中,③转换后的结果存放在AL中. TABLE: 9

例如:MOV BX,OFFSET TABLE

MOV AL,8 ……

IN AL,1 第9个字符 AAH XLAT ;查表

OUT 1,AL ;(AL)= AAH 表长度256 本指令可用在数制转换、函数表查表、代码转换等场合。

5.地址传送指令(有三条地址传送指令) ⑴ LEA (Load Effective Address) 一般格式: LEA OPRD1,OPRD2

功能:把源操作数OPRD2的地址偏移量传送至目的操作数OPRD1。

要求:①源操作数必须是一个内存操作数,②目的操作数必须是一个16位的通

用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。 例:LEA BX,BUFR;把变量BUFR的地址偏移量部分送到BX

⑵ LDS (Load pointer into DS) 一般格式: LDS OPRD1,OPRD2

功能:完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段地址送入DS,偏移量部分送入一个16位的指针寄存器或变址寄存器。

要求:源操作数是一个内存操作数,目的操作数是一个通用寄存器/变址寄存器。

例如:LDS SI,[BX] ;将把BX所指的32位

地址指针的段地址部分送入DS,偏移量部分送入SI。图2-9 LDS指令示意

如图2-9所示。

⑶ LES (Load pointer into ES) 一般格式: LES OPRD1,OPRD2

这条指令除将地址指针的段地址部分送入ES外,与LDS类似。例如: LES DI,[BX+COUNT]

6.标志寄存器传送(有四条标志传送指令)

10

⑴ LAHF (LOAD AH WITH FLAG)

将标志寄存器中的SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器的指定位,空位没有定义。 ⑵ SAHF (STORE

AH WITH FLAG)

将寄存器AH的指定位,送至标志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根据AH的内容,影响上述标志位,对OF、DF和IF无影响。 ⑶ PUSHF (PUSH FLAG)

将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。 ⑷ POPF (POP FLAG)

堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。

二、算术运算指令

8086/8088提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。 带符号数用补码表示。同时

8086/8088也提供了各种校正操作,故可以进行十进制算术运算。

参与加、减运算的操作数可如上图所示。 1.加法指令 (Addition)

⑴一般形式:ADD OPRD1,OPRD2

功能:OPRD1←OPRD1+OPRD2

完成两个操作数相加,结果送至目的操作数OPRD1。目的操作数可以是累加器,任一通用寄存器以及存储器操作数。 例如:

ADD AL,30;累加器与立即数相加

ADD BX,[3000H];通用寄存器与存储单元内容相加 ADD DI,CX;通用寄存器之间

ADD DX,DATA[BX+SI];通用寄存器与存储单元内容相加 ADD BETA[SI],DX;存储器操作数与寄存器相加

11

这些指令对标志位CF、DF、PF、SF、ZF和AF有影响。 ⑵一般形式:ADC OPRD1,OPRD2;带进位的加法

功能:OPRD1←OPRD1+OPRD2 +CF

这条指令与上—条指令类似,只是在两个操作数相加时,要把进位标志CF的现行值加上去,结果送至目的操作数。

ADC指令主要用于多字节运算中。若有两个四字节的数,已分别放在自FIRST和SECOND开始的存储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,则可用以下程序段实现相加。

MOV AX,FIRST

ADD AX,SECOND;进行字运算 MOV THIRD,AX MOV AX,FIRST+2 ADC AX,SECOND+2 MOV THIRD+2,AX

这条指令对标志位的影响与ADD相同。 ⑶一般形式:INC OPRD ;

功能:OPRD←OPRD+1

完成对指定的操作数OPRD加1,然后返回此操作数。此指令主要用于在循环程序中修改地址指针和循环次数等。

这条指令执行的结果影响标志位AF、OF、PF、SF和ZF,而对进位标志没有影响。

如:INC AL

INC [BX]

2.减法指令(Subtraction)

⑴一般形式:SUB OPRD1,OPRD2 ;

功能:OPRD1←OPRD1-OPRD2

完成两个操作数相减,也即从OPRD1中减去OPRD2,结果放在OPRD1中。

例如: SUB CX,BX

SUB

[BP],CL

⑵一般形式:SBB OPRD1,OPRD2 ;

功能:OPRD1←OPRD1-OPRD2-CF

12

搜索更多关于: 汇编语言指令详解 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 例如: XCHG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH 4.累加器专用传送指令 有三种,输入、输出和查表指令。前两种又称为输入输出指令。 ⑴ IN 指令 一般格式:IN AL,n ; B AL←[n] IN AX,n ; W AX←[n+1][n] IN AL,DX ; B AL←[DX] IN AX,DX ; W AX←[DX+1][DX] 功能:从I/O端口输入数据至AL或AX。 输入指令允许把一个字节或

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com