数据传送指令及算术逻辑运算和移位指令的使用

合集下载

第二节传送指令

第二节传送指令

出栈方向 执行后 (BX)=1020 高地址 SP=2008H
POP BX指令执行示意图
堆栈用途:
暂时保存CPU内部某些寄存器的数据。
调用子程序, 响应中断时都要用到堆栈。 调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。
主程序
主程序
IP
IP(下)
继主 续程 执序 行
这是两条堆栈操作指令。
什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。
堆栈以字为单位进行压入弹出操作。
堆栈操作是如何进行的? 为什么要设置堆栈? 为什么要按 “后进先出”方式工作?
规定由SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP的初值规定了所用 堆栈区的大小。堆栈的最高地址叫栈底。
32位 )
8086/8088指令助记符表
指令类别
记助符
数 通用传送 MOV, PUSH, POP, XCHG, XLAT 据 输入输出 IN, OUT
传 目标地址传送 LEA, LDS, LES 送 标志传送 LAHF, SAHF, PUSHF, POPF
加法
ADD, ADC, INC, AAA, DAA
POP (Pop word off stack) 3、XCHG (Exchange)
1. MOV dest, src ; (dest) (src) 目的 源 目的 源
功能: • 把一个字节(B)或一个字(W)操作数由源传送至目的。 • 实现: 寄存器 寄存器/存储器之间;
立即数寄存器/存储器 寄存器/存储器段寄存器之间的数据传送。
除 SAHF和POPF指令外,对标志位没有影响。
(一)通用传送指令(General Purpose Transfer)

第3章_2数据传送指令.

第3章_2数据传送指令.

MOV指令不能实现两个存储单元之间的数据传送。
例: MOV AL, AREA1 MOV AREA2, AL
2019/4/4 6
MOV指令——立即数传送
mov mov mov mov CL,4 ;CL←4,字节传送 DX,0FFh ;DX←00FFh,字传送 SI,200h ;SI←0200h,字传送 bvar,0Ah ;字节传送
提供方便灵活的通用传送操作 有5条指令 MOV XCHG XLAT PUSH/POP
2019/4/4
4
1. 传送指令MOV(move)
把一个字节或字的操作数从源地址传送至目的 地址
MOV reg/mem, imm;立即数送寄存器或主存
MOV reg/mem/seg, reg;寄存器送(段)寄存器或主存
2019/4/4
MOV指令也并 非任意传送!
12
非法指令——两个操作数类型不一致
在绝大多数双操作数指令中,目的操作数和源操作数必须 具有一致的数据类型,或者同为字量,或者同为字节量, 否则为非法指令 MOV AL, 050AH MOV SI, DL ;非法指令,修正: ;mov ax,050ah ;非法指令,修正: ;mov dh,0 ;mov si,dx
MOV reg/seg, mem;主存送(段)寄存器
MOV reg/mem, seg;段寄存器送寄存器或主存
演示
2019/4/4 5
1. 传送指令MOV(move)
具体传送方向:
REGREG(除了CS和IP以外) MOV AX,BX REG内存 MOV AX,[2010H] REG ←立即数 内存←立即数 MOV [SI],CX MOV AL,32H MOV WORD PTR[DI],1080H

MCS-51指令系统

MCS-51指令系统
18
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,

微机原理与接口技术第3章(指令部分)

微机原理与接口技术第3章(指令部分)
第 3 章 指令系统及汇编语言程序设计
例:编程计算 0+1+2+3+4+ -----10 编程计算
MOV AL,0 , MOV BL,1 , MOV CL,10 NEXT:ADD AL,BL , INC BL DEC CL JNZ NEXT ;CL≠0 转 ≠ HLT
1
3.1 概述 一、指令包含的基本内容
12
(3)相对寻址
例: MOV AX, [SI+100H]
;结果 : 结果 AX (DS×16+SI+100H) ×
例:MOV AL,[BP+DATA] MOV AL, DATA[BP] ; DATA是符号表示的位移量。 表示的位移量 是符号表示的位移量。
结果 : AL (SS×16+BP+DATA) ×
11
(2)间接寻址 例:MOV AX,[BX] , •结果 : AX 结果 (DS×16+BX) ×
...
3000H:0000H : • EA= BX /SI /DI , 物理地址=DS*16+EA 物理地址 • EA= BP 物理地址=SS*16+EA 物理地址 :1234H :50H :1235H :30H
1. 做什么操作? 做什么操作? MOV ,ADD, OR,CMP等助记符 等助记符
2. 操作的数据是什么? ①CPU内的寄存器; 操作的数据是什么? 内的寄存器 内的寄存器; 内存的某一个或几个单元 单元; ②内存的某一个或几个单元; 结果放在那里? 3. 结果放在那里? 立即数。 ③立即数。 端口; 端口 ④I/O端口; 下一条指令在哪里? 4. 下一条指令在哪里? IP←IP+1

PLC21-功能指令(第九章)

PLC21-功能指令(第九章)

2.减法运算指令 对有符号数进行相减操作,包括整数减法、双整数减法、 实数减法。 梯形图表示:
语句表示:整数减法指令“-I IN1,OUT”;双整数减法指 令“ - D IN1,OUT”;实数减法指令“ - R IN1,OUT”。
当信号EN=1时,被减数IN1与减数IN2相减,其结果传送到 OUT中。
四、比较指令 数值比较指令用于比较两个数值; 字符串比较指令用于比较两个字符串的ASCll码字符。
操作数按指定条件进行比较。
条件成立时,触点闭合,所以实际上是一种位指令。 仅说明数值比较指令 . 类型有:字节比较、整数比较、双字整数比较和实数比较。 字节比较是无符号的,其它类型为有符号的。 比较指令的关系符有:等于=、大于>、小于<、不等<>、 大于等于>=、小于等于<= 等6种。 对比较指令可进行LD、 A和O编程。以关系符“=”为例说明。
4. 正弦、余弦、正切指令
梯形图表示:
语句表示:正弦指令“SIN IN,OUT”;余弦指令“COS IN,OUT”;正切指令“TAN IN,OUT”。
当允许信号EN=1时,将一个双字长(32位)的实数弧度 值IN分别取正弦、余弦、正切,各得到32位的实数结果传送 到OUT中。 如果已知输入值为角度,要先将角度值转化为弧度值, 使用“(*R)MUL_R”指令,用角度值乘以π /180。
当信号EN=l时,被乘数IN1与乘数IN2相乘,结果送到OUT 中。在语句表示中,要先将被乘数送到OUT中,然后和IN1中 的数据进行相乘,溢出以及输入非法参数或运算中产生非法值, 都会使特殊标志SM1.1置位。
4.除法运算指令 对有符号数进行相除操作,包括:整数除法、双整数除法、 完全整数除法和实数除法。
3.块传送指令 字节块(BMB)的传送、字块(BMW)的传送和双字块的 传送(BMD)指令传倒数量的数据到一个新的存储区,数据的 起始地址为IN,数据的长度为N个字节、字或双字。 新块的起站地址为OUT。N的范围从l至255。

第3章 计算机指令系统 数据传送指令

第3章 计算机指令系统 数据传送指令

* * * *
出栈方向
高地址
POP AXX) = 2107H
堆栈:‘先进后出’的存储区,段地址存放在SS中, SP在任何时候都指向栈顶,进出栈后自动修改SP。 注意: ● PUSH和POP指令只能是字操作,因此存取字数据后,SP的 修改必须是+2或-2; ● PUSH和POP指令不能使用立即数方式(单操作数指令一般不 能使用立即数方式); PUSH 1234H ● POP指令的dst不允许是CS寄存器; POP CS ● PUSH和POP指令都不影响标志位。
注意:
* 不影响标志位 * 前256个端口号00H~FFH可直接在指令中指 定(长格式) * 如果端口号 256,端口号 DX(短格式)
地址传送指令
有效地址送寄存器指令: LEA REG, SRC
指针送寄存器和DS指令: LDS REG, SRC 指针送寄存器和ES指令: LES REG, SRC 注意:
PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
例: PUSH AX PUSH BX PUSH CX …… POP POP CX BX ;其间用到AX、BX、CX
; 后进先出
POP
AX
注意恢复数据时寄存器的操作顺序(出栈和进栈的顺序相反)。
累加器专用传送指令(只限使用AX或AL)
通用数据传送指令
传送指令: MOV DST, SRC
执行操作: (DST) (SRC) 功能: 将源操作数(字节或字)传送到目的地址 支持的寻址方式:src可用data,mem,reg Dst可用mem,reg 例:MOV AX,DATA_SEG MOV DS,AX 例: MOV AL,’E’ 例: MOV BX,OFFSET TABLE

数据传送指令

数据传送指令
(一)通用传送指令(General Purpose Transfer) (二)输入输出指令(Input and Output) (三)目的地址传送指令(Address-object transfer)
(四)标志传送指令(Flag register transfer)
5
第五页,编辑于星期四:二十一点 十六分。
注意:
(1)不能用一条MOV指令实现以下传送。
存储单元之间的传送
MOV MEM2 , MEM1 错。
MOV AX , MEM1
MOV MEM2 , AX 对。
立即数送段寄存器
例 : MOV DS,2000H 错。
MOV AX, 2000 H
MOV DS , AX
对。
12
第十二页,编辑于星期四:二十一点 十六分。
一. 数据传送指令
功能:
负责把数据、地址或立即数传 送到寄存器或存储单元。
特点: 它是计算机最基本、最重要的一种操作,使用比例最高。
种类(分四种): • 通用传送指令包括: MOV, PUSH, POP ,XCHG, XLAT。
• 输入输出指令指令包括: IN, OUT。
• 目的地址传送指令包括: LEA, LDS, LES • 标志传送指令包括 : LAHF, SAHF, PUSHF, POPF
; 累加器存储器,直接寻址 ;段寄存器存储器,直接寻址
;寄存器存储器,变址寻址
MOV AX , DISP [SI] MOV DS , MEM
MOV CX , DISP [BX] [SI]
;存储器累加器,变址寻址 ;存储器段寄存器,直接寻址
;存储器累加器,相对基址加变址
11
第十一页,编辑于星期四:二十一点 十六分。

移位与算法指令及应用

移位与算法指令及应用

移位与算法指令及应用移位指令是计算机指令的一种,用于对操作数进行移位操作。

移位操作是将二进制数向左或向右移动一定的位数。

移位指令包括逻辑左移、逻辑右移、算术右移和循环左移等操作。

逻辑左移(Logical Left Shift)是将一个二进制数向左移动一定的位数,通过在右边补0来完成。

逻辑左移可以看作是乘以2的移位操作,因为在二进制数中,向左移动一位相当于将数值乘以2。

逻辑右移(Logical Right Shift)是将一个二进制数向右移动一定的位数,通过在左边补0来完成。

逻辑右移可以看作是除以2的移位操作,因为向右移动一位相当于将数值除以2。

算术右移(Arithmetic Right Shift)是将一个带符号的二进制数向右移动一定的位数,并在左边使用原来的符号位进行填充。

算术右移适用于带符号的整数,其操作类似于逻辑右移,但是保持符号位不变。

循环左移(Circular Left Shift)是将一个二进制数向左循环移动一定的位数。

循环左移会将最高位的数移到最低位,同时原来的最低位移到最高位,其它位数依次向左移动。

移位指令在计算机中广泛应用于各种算法和数据处理中,下面将介绍一些常见的应用场景。

1. 乘以或除以2的幂次方:通过逻辑左移或逻辑右移实现。

例如,将一个数值左移n位,相当于将其乘以2的n次方;将一个数值右移n位,相当于将其除以2的n次方。

2. 快速乘法:通过移位和加法操作实现。

对于两个数a和b,可以将其中一个数进行拆分,然后利用移位和加法操作进行计算,最后再进行合并。

这样可以大大降低乘法的复杂度。

3. 位操作:移位操作可以用于提取或设置二进制数的特定位。

通过逻辑右移和位与操作,可以提取出某一位的值;通过逻辑左移和位或操作,可以将某一位设置为1。

4. 编码压缩和解压缩:在一些数据压缩算法中,移位操作可以用于对数据进行编码压缩和解压缩。

例如,对于重复出现的相同数据,可以使用移位指令将其压缩为更小的形式,并在需要时进行解压缩。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
1.数据传送指令的使用
一,实验目的;
把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端
口中读取数据。
1. 通用传送指令: MOV,PUSH,POP,XCHG,XLAT
2. 输入输出指令指令: IN,OUT
3. 目的地址传送指令: LEA,LDS,LES
4. 标志位传送指令: LAHF,SAHF,PUSHF,POPF
二,实验步骤;
1. 传送指令
1)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
2)用U命令检查键入的程序并记录,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意
标志位有无变化。
2. 改变标志寄存器psw中tf标志的状态(0——1或1——0),其余位保持不变。
3. 设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址
300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下使用A
命令送入下面程序,并用单步T命令执行的方法,分析每条指令源地址的形成过程?当数
据传送每完成一次,试分析AX寄存器中的内容是什么?
程序清单如下:
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
HLT
4. 使用标志位传送指令,编程序段将标志位寄存器的低八位的值存入内存单元DS:1000H
中或堆栈中,然后将标志位寄存器的低八位置位为10101010。

2.算术逻辑运算和移位指令的使用
一,实验目的;
使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、
或、非、异或等逻辑运算,以及移位运算和代码转换运算
1, 算术运算:加法指令、减法指令,乘法指令、除法指令以及转换指令;
2. 逻辑运算指令:AND,TEST,OR,XOR,NOT
3. 移位指令:
移位运算可以分为算术逻辑移位和循环移位两类。
(1)算术逻辑移位指令:SHL,SHR,SAL,SAR
(2)循环移位指令:ROL,ROR,RCL,RCR
二,实验步骤;
1. 已知程序段定义如下:
MOV AX,1234
MOV CL,4
SHL AX,CL
INC AX
DEC CL
ROR AX,CL
MOV BX,4
MUL BX
MOV BX,4
DIV BX
INT 20
(1) 每条指令执行后,AX寄存器中的内容是什么?
(2) 每条指令执行后,标志寄存器的各位标志等于什么?
(3) 程序结束时,AX和DX的内容等于什么?

2. 编写一程序求双字数据的绝对值。双字数据保存在DX和AX中,结果保存在BX和CX
中。
3、编制程序,将DX和AX中的双字右移4位。
4. 编制程序,判断DL寄存器的低4位是否全为0?是否有0?判断AL寄存器中的数值是
奇数还是偶数?是否为4的倍数?

6、编制程序,用一条指令让AX寄存器清0;用一条指令使DX寄存器高3位为1,其余位
保持不变;用一条指令使BL寄存器低4位为0,其余位保持不变;用一条指令,使SI和
DI寄存器中对应位不相同的位置均置1;
三,串操作指令的使用
一,实验目的;
所谓串就是内存中一段地址相连的字节或字。串操作就是对串中各项数据进行某种运算,也
叫数据块操作。
8086/8088有5种基本串操作:
MOVS(Move string) 串传送指令
CMPS(Compare string) 串比较指令
SCAS(Scan string) 串扫描指令
LODS(Load from string) 从串取指令
STOS (Store in to string) 存入串指令
可以使用3种重复前缀:
REP(Repeat) 无条件重复
REPE/REPZ(Repeat while equal/zero) 相等/为零则重复
REPNE/REPNZ(Repeat while not equal/not zero)不相等/不为零则重复

可以只有源操作数,可以只有目标操作数,可能二者都有
源操作数用SI 寻址,隐含DS值为段地址,可以用段跨越前缀指定其它段;目标操作
数用DI寻址,隐含ES为段地址
每次串操作指令执行后根据DF标志对SI、DI 自动进行调整:
DF=1,DI、SI自动-1 (字节)或-2(字)
DF=0,DI、SI自动+1(字节)或+2(字)
通过使用串操作时我们对汇编的编写程序可以更简单,更快的写出程序。
二,实验步骤;
1.
编写程序段,查找字符串中是否含有字符"&",若有,将字符"&"用空格字符代替。

2.已知在N到N+I的内存单元中有一组ASCII码字符串(共I+1个),编写程序将此字符串传
送到NI到NI+I内存单元中,并使字符串的顺序与原来字符串的顺序相反
3.编写程序段:查找TELEPHONE中的电话号码(10位)中有无“-”字符,若有则将程序转向FOUND
处执行;若无则将程序转向NON_FOUND出执行;

4、ds:100开始的内存单元中存放着以“*”结尾的字符串,编写程序段查找该字符串中包含
字符’$’的个数,把个数放入CX寄存器中。
实验截屏如下:

三,实验小结;
注意:在数据传送指令中:除 SAHF和POPF指令外,所有指令对标志寄存器没有影响。
LEA A,B是将B的有效地址送到A中,而MOV A,B是B所指向字的单元的内容送到A中。
LDS A,B计算出有效地址EA,DS的有效地址EA+2。
在算术运算类指令中,如果用ADD,SUB等指令,也就是不带进位的加法指令。如果最高位相
加有进位,则自动丢失。
AND指令一般用来使某些位清“0”
OR指令一般用来使某些位置“1”
XOR指令使相同位为“0”,不同位为“1”
NOT指令一般用来“求反”
对于ROL,ROR等无进位循环,循环8次变回原来的数。
对于RCL,RCR等带进位循环,循环9次变回原来的数。

相关文档
最新文档