专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

133条指令有哪些_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/7 1:56:19       共计:3594 浏览

133条指令有哪些?

8086指令包含133条基本指令, 一般分为五类来介绍

传送指令,算术运算指令,逻辑运算和移位指令,串操作指令,控制转移指令

一、数据传送类指令

数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令

传送指令把数据从一个位置传送到另一个位置

除标志寄存器传送指令外,均不影响标志位

重点掌握

MOV XCHG PUSH POP XLAT LEA

1、通用数据传送指令

提供方便灵活的通用传送操作

有3条指令

MOV

XCHG

PUSH POP

① 基本传送指令MOV(move)

mov cl,4 ;cl←4,字节传送

mov DX,0ffh ;dx←00ffh,字传送

mov si,200h ;si←0200h,字传送

mov bvar,0ah ;字节传送

;假设bvar是一个字节变量,定义如下:bvar db 0

mov wvar,0bh ;字传送

;假设wvar是一个字变量,定义如下:wvar dw 0

mov al,[bx] ;al←ds:[bx]

mov dx,[bp] ;dx←ss:[bp+0]

mov dx,[bp+4] ;dx←ss:[bp+4]

mov es,[si] ;es←ds:[si]

2,非法指令的主要现象:

两个操作数的类型不一致

无法确定是字节量还是字量操作

两个操作数都是存储器

段寄存器的操作有一些限制

例子:

1、当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明

MOV [BX+SI], 255 ;非法指令,修正:

;mov byte ptr [BX+si],255

;byte ptr 说明是字节操作

;mov word ptr [bx+si],255

;word ptr 说明是字操作

2,8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)

MOV buf2, buf1 如 MOV [BX],[SI]

3,MOV DS, ES ;非法指令,修正:

;mov ax,es

;mov ds,ax

MOV DS, 100H ;非法指令,修正:

;mov AX,100h

;mov ds,ax

MOV CS, [SI] ;非法指令

;指令存在,但不能执行

② 交换指令XCHG(exchange)

XCHG reg,reg/mem

;reg ? reg/mem

寄存器与寄存器之间对换数据

寄存器与存储器之间对换数据

不能在存储器与存储器之间对换数据

例子:

mov ax,1199h ;ax=1199h

xchg ah,al ;ax=9911h

;等同于 xchg al,ah

mov wvar,5566h ;wvar是一个字量变量

xchg ax,wvar ;ax=5566h,wvar=9911h

;等同于 xchg wvar,ax

注意:不能在两个内存单元之间交换

如:XCHG [BX],[SI] 错误!

段寄存器中CS、IP不能做操作数

③ 堆栈操作指令

1.堆栈是一个“后进先出LIFO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址

堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定

2,堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP

堆栈由栈底向低地址方向生成

push:进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部

如:push ax

push [2000h]

出栈指令POP:出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2

如:pop ax

pop wvar

3,堆栈操作的特点

堆栈操作的单位是字,进栈和出栈只对字进行

数据从栈顶压入和弹出时,都是低地址送低字节,高地址送高字节

堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据

堆栈段是程序中不可或缺的一个内存区,常用来

临时存放数据

传递参数

保存和恢复寄存器

2、累加器专用传送指令

① 输入输出指令(IN/OUT指令)

格式:IN AL,port;port为直接端口地址

IN AL,DX ;DX的内容为端口地址(间接方式)

IN AX,port;

IN AX, DX

OUT port, AL

OUT DX, AL

OUT port, AX

OUT DX, AX

注意:①只能用累加寄存器不能用其它寄存器

②当端口地址在00H—FFH之间可以用直接地址

当端口地址大于FFH时必须用DX间址形式

例:IN AL,40H; (40H) AL

IN AX,80H; (80H)、(81H) AX

MOV DX, 0382H

IN AL,DX ; (0382H) AL

OUT 62H, AL

MOV DX, 0380H

OUT DX,AX

② 换码指令XLAT(查表指令)

将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL

XLAT ;al←ds:[bx+al]

换码指令执行前:

在主存建立一个字节量表格,内含要转换成的目的代码

表格首地址存放于BX,AL存放相对表格首地址的位移量

换码指令执行后:

将AL寄存器的内容转换为目标代码

③址传送指令 三条LEA 、LDS、LES

将存储器操作数的有效地址送至指定的16位通用寄存器

LEA r16, mem

;r16←mem的有效地址EA

例子: 有效地址的获取

LEA AX, [2375H] ; AX=2375H

LEA SP, [BX+SI] ; SP=(BX)+(SI)

区别: LEA SI, BUFF; SI=BUFF

MOV SI,BUFF; SI=(BUFF)

LDS r16, mem

;ds、r16←mem中的双字,

执行后,会更新r16,ds的值。前面两个字节送到r16,后面两个字节送到ds

LES r16, mem

;es、r16←mem中的双字,执行后,会更新r16,ds的值,效果与lds类似

3、标志传送指令

① 读标志指令

LAHF ;标志寄存器低字传送到AH

② 设标志指令

SAHF ; AH的内容送标志寄存器低8位

③ 标志寄存器堆栈指令

PUSHF ;标志寄存器内容(16位)压栈

④ 标志寄存器出栈指令

POPF ;弹出标志寄存器的内容。

二、 算术运算类指令

概述:算术运算类指令用来执行二进制的算术运算:加减乘除以及BCD码调整。

这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志。

重点掌握

加法指令:ADD、ADC、INC

减法指令:SUB 、SBB、DEC、CMP、NEG

1、 加法和减法指令

加法指令:ADD, ADC和INC

减法指令:SUB, SBB, DEC, NE

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:元气骑士高版本云存档可以转到低版本吗_服务器 | ·下一条:什么是第五代移动通信_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有