微机原理笔记——数据传送指令

数据传送指令

通用数据传送指令

传送指令MOV
格式
MOV DST,SRC
功能

将一个源操作数送到目的操作数

说明

1.DST是目的操作数,可以是寄存器,存储器,累加器

SRC是源操作数,可以是寄存器,存储器,累加器,立即数

2.MOV指令可分为四种情况

1.寄存器于寄存器之间数据传输指令
MOV AX,BX
MOV DS,AX
MOV BP,SI

注意:指令指针IP不参与数的传送,代码段寄存器CS可以作为源操作数,但不能作为目的操作数

2.立即数到通用寄存器的传送指令

注意:立即数只能用于源操作数,不能用于目的操作数

MOV AL,25
3.寄存器和存储器的数据传送指令

注意:段寄存器CS不能作为目的操作数

MOV AL,BUFFER
MOV AL,[SI]
4.立即数到存储器的数据传送
MOV ALFA,24;
注意情况

1.MOV指令不影响状态标志位

2.储存器和储存器之间不能进行数据直接传送

例子

用MOV指令实现两个内存字节单元内容的交换,设两个内存单元的偏移地址分别是 2035 H 2035H 2035H 2045 H 2045H 2045H,

执行过程如下

在这里插入图片描述

所以具体程序段如下

MOV BL,DS:[2035H];
MOV CL,DS:[2045H];
MOV DS:[2035H],CL;
MOV DS:[2045H],BL;
进栈指令PUSH
格式
PUSH OPRD
说明

1.OPRD为字操作数可以是寄存器或者存储器操作数

2.PUSH的操作过程是 ( S P ) < − − ( S P ) − 2 , ( ( S P ) ) < − − O P R D (SP)<--(SP)-2,((SP))<--OPRD (SP)<(SP)2,((SP))<OPRD,即先修改堆栈SP(压入时自动减2),然后将指定的操作数送入新的栈顶位置

出栈指令POP
格式
POP DST
说明

1.PUSH和POP指令对状态标志位没有影响

2.POP操作过程是 D S T < − − ( ( S P ) ) , ( S P ) < − − ( S P ) + 2 DST<--((SP)),(SP)<--(SP)+2 DST<((SP)),(SP)<(SP)+2

交换指令XCHG
格式
XCHG OPR1,OPR2
说明

1. O P R 1 OPR1 OPR1 O P R 2 OPR2 OPR2的内容互换

2.两个操作数 O P R 1 OPR1 OPR1 O P R 2 OPR2 OPR2的长度可均为 8 8 8 16 16 16位,且其中至少有一个是寄存器,但不允许使用段寄存器

例子
XCHG AL,BL;                       寄存器AL和BL的内容互换
XCHG AX,BX;                       寄存器AX和BX的内容互换
XCHG [BX],CX;                     BX指向的内存字单元内容与CX的内容互换

累加器专用指令

查表指令XLAT
格式
XLAT
操作

通过AL中的索引值在字节型数据表中查到表项的内容并返回到AL

说明

在使用该指令之前,应在数据段中定义一个字节型表,并将表起始地址的偏移量放入BX,表的索引值放在AL中,索引值从 0 0 0开始,最大 255 255 255结束

执行指令后,在AL中即可得到对应该索引值的表项内容

TAB DB  3FH,06H,5BH,4FH,66H    ;定义的数据表
	DB  6DH,7DH,07H,7FH,6FH
MOV BX,OFFSET TAB              ;将TAB的偏移量送入BX中
MOV AL,4                       ;在AL中存放索引值4
XLAT                           ;查表得到的内容在AL中
输入指令IN
格式
IN AC,PORT
操作

把外设端口(PORT)的内容输入到累加器

说明

1.输入指令IN从输入端口传送一个字节到AL寄存器或者传送一个字到AX

2.当端口地址为 0 − 255 0-255 0255时,可以直接寻址方式(即用一个字节立即数指定端口地址),也可以间接寻址方式,当端口地址大于 255 255 255时,只能用间接寻址方式

例子
IN AL,80H                         ;把80H端口的字节输入到AL中
IN AX,80H                         ;把80H端口的字输入到AX中
MOV DX,288H                       ;把端口地址288H送入DX
IN AL,DX                          ;把288H端口的字节输入到AL中
输出指令OUT
格式
OUT PORT,AC
操作

把累加器的内容输出到外设端口

地址传送指令

装入有效地址指令LEA(Load Effective Address)
格式
LEA REG,SRC
操作

把源操作数的有效地址(即偏移地址)装入指定寄存器

说明

源操作数必须是存储器操作数

目的操作数必须是16位的通用寄存器

例子
LEA BX,[BX+DX+6H];

B X = 1000 H , D X = 0200 H BX=1000H,DX=0200H BX=1000H,DX=0200H执行完指令后 B X = 1206 H BX=1206H BX=1206H

该指令和MOV指令的区别在于,LEA指令传输的是地址,MOV传输的是内容

加载数据段指针指令LDS(Load Pointer into register and DS)
格式
LDS REG,SRC
操作

将源操作数指定的FAR型指针(占4个连续单元)传送给目的操作数和DS寄存器

说明

目的操作数必须是16位的通用寄存器,传送时较低的两个字节装入16位的通用寄存器,较高的两个字节装入DS寄存器

加载附加段指针指令LES(Load Pointer into register and ES)
说明

与LDS不同就是较高的两个字节装入ES中

传送标志指令

LAHF指令

将标志寄存器的低八位送到AH寄存器

SAHF指令

AH寄存器送标志寄存器的低八位

PUSHF指令

先将SP的值减2,再将标志寄存器的值传送到栈顶

POPF

先将SP指示的栈顶字段送入标志寄存器,然后将SP的值

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法为您提供完整的微型计算机实验代码。但我可以给您提供一些关于数据传送的微型计算机实验1的基本知识。 数据传送指的是将数据从一个地方传送到另一个地方。在微型计算机中,数据传送分为两种类型:内部数据传送和外部数据传送。 内部数据传送是指数据在微处理器内部传送,例如从寄存器到寄存器或从寄存器到内存。外部数据传送是指数据在微处理器和外部设备(如输入/输出设备、存储器等)之间传送。 在微型计算机实验1中,您需要了解以下内容: 1. 内部数据传送指令和操作码 2. 外部数据传送指令和操作码 3. 内存地址的编码方法 4. 数据传送的实现方法 在数据传送实验中,您需要编写程序来实现将数据从一个位置传送到另一个位置。此外,您还需要使用微型计算机实验箱中的设备(如键盘、显示器等)来进行输入和输出。 下面是一个简单的数据传送实验示例代码: ``` ORG 100H ;程序起始地址 MOV AX, 1234H ;将数据1234H存放到AX寄存器中 MOV BX, AX ;将AX寄存器中的数据传送到BX寄存器中 MOV CX, 5678H ;将数据5678H存放到CX寄存器中 MOV [1000H], CX ;将CX寄存器中的数据传送到内存地址1000H中 MOV DX, [2000H] ;将内存地址2000H中的数据传送到DX寄存器中 HLT ;程序结束 ``` 在上面的示例代码中,我们使用了MOV指令来实现数据传送。MOV指令用于将数据从一个位置传送到另一个位置。在这个例子中,我们将数据存放到寄存器和内存中,并将数据从内存中传送到寄存器中。 在编写完代码后,您需要使用微型计算机实验箱来进行编译和运行。在运行程序时,您需要在键盘上输入数据,并在显示器上查看输出结果。 希望这些信息对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值