【微机原理】汇编指令之位操作指令

这篇具有很好参考价值的文章主要介绍了【微机原理】汇编指令之位操作指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、逻辑指令

除了NOT指令不对符号位有影响,ANDORXORTEST对符号标志为影响都一样,AF无定义,都使CF=0F=0

1.AND 与指令

格式:AND dst,src

操作:dst <— dst ^ SRC

 AND指令可以将两个操作数的内容按位相“与”,并将结果保存在目标操作数中。

AND指令常用于将操作数的某些位清0,而其余位维持不变。

2.OR 或指令

格式:OR dst,src

操作:dst <— dst V src

OR指令可将两个操作数的内容按位相“或”,并将结果保存在目标操作数中。

利用OR指令可将操作数的某些位置1,而其余位不变。

3.NOT 非指令

格式:NOT opr

操作:opr <— ~opr  ; 符号~表示逻辑反

NOT指令可将操作数的内容按位求反,并将结果保存在源操作数中,其执行结果不影响任何标志位

4.XOR 异或指令(相同为0,不同为1)

格式:XOR dst,src

操作:dst <— dst (+) src

  XOR指令可将两个操作数按位“异或”,并将结果保存在目标操作数中。

  利用XOR指令,可将操作数的某些位求反,某些位不变。维持不变的位与0相“异或”,需要求反的位于1相“异或”。

5.TEST 测试指令

格式:TEST opr1,opr2

操作:opr1 ^ opr2

  TEST指令不回送到结果到目标操作数,只影响标志寄存器。功能和AND指令一样

  使用TEST指令,通常是在不希望改变原有操作数的情况下,检测某一位或某几位的状态。所以常被用于条件转移指令之前,根据测试的结果使程序发生跳转。

 

二、移位指令(当移位次数大于等于2时,要把移位次数放入CL中)

无论左移还是右移,移出的位一律进CF位。影响SF、ZF、PF

不允许使用立即数(大于等于2)和段寄存器

1.SHL(shift  left):逻辑左移指令   左移一位相当于*2

格式:SHL dst,1/CL

操作:SHL指令可将操作数的内容向左移位,移位的次数由1或者CL给定,每左移一位,操作数最高位的状态移入CF标志位,低位补0

2.SHR(shift right):逻辑右移指令 右移一位相当于/2

格式:SHR dst,1/CL

操作:SHR指令的操作和SHL指令相反,可将操作数的内容向右移位,每右移一位,操作数最末位移入CF标志,高位补0。

3.SAL(shift arithmetic left):算术左移指令

格式:SAL dst,1/CL

操作:与SHL指令完全相同(这两个指令用那个也可以)

4.SAR(shift airthmetic  right):算术右移指令

格式:SAR dst,1/CL

操作:将操作数的内容向右移位,每右移一位,操作数最末位移入CF标志位,最高位移入次高位的同时其值不变符号位始终保持不变

总结:

(1)算术左移(SAL)与逻辑左移(SHL)相同,可用于无符号数*2操作

         逻辑左移(SHL)可用于无符号数除2操作 

         算术右移(SAR)可以用于有符号数除2操作

(2)每左移一位,相当于将原来数据乘以2,每右移一位,相当于将原数据除2,根据移位操作的结果置状态标志器中的状态标志(AF(辅助进位)位除外),若移位的次数是1,移位的结果又使符号位发生改变,则将溢出标志OF1,若移多位时,OF标志无效,这样,对于有符号数而言,可由此判断移位后的符号位和移位前的符号位是否相同。

(3)移动一位时由指令中的计数值直接给出,移动两位及以上,则移位次数由CL指定,即必须将移位位数事先装入CL中。

三、循环移位指令

仅影响CF和OF标志位

1.ROL 循环左移指令

格式:ROL dst,count

操作:每左移一位,操作数最高位移出送入状态位CF和循环传递到操作数最末位

2.ROR 循环右移指令

格式:ROR dst,count

操作:ROR指令的操作和ROL指令相反,每右移一位,将操作数最末位移出,传递到CF标志和操作数的最高位

3.RCL 带进位循环左移指令

格式:RCL dst,count

操作:每左移一位,将操作数最高位移入CF标志位CF标志原先的状态移入操作数最末尾

4.RCR 带进位循环右移指令

格式:RCR dst,count

操作:RCR指令完成的操作和RCL指令正好相反,每右移一位,操作数最末位移入CF标志CF标志原先的状态移入操作数最高位

总结:

(1)循环移位也有两类,ROL和ROR指令在执行时,没有把CF套在循环中,常称为小循环移位。而RCL和RCR指令在执行时,连同CF一起进行循环移位,称为大循环移位。

(2)四条循环移位指令仅影响标志位CFOF,对OF的影响是:ROL和RCL指令在执行一次左移后,如果操作数的最高位与CF(原先的符号位)不等,说明新的符号位与原来的符号位不同了,则使OF=1,表明左移循环操作造成了溢出。同样,ROR和RCR指令在执行一次右移后,如果操作数的最高位和此高位不等,也表明移位后新的数据符号与原来的符号不同了,此时也会使OF = 1,产生溢出。文章来源地址https://www.toymoban.com/news/detail-435745.html

到了这里,关于【微机原理】汇编指令之位操作指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    实验一 软件开发环境和简单程序设计 实验二 I_O输入输出实验 实验三 键盘扫描显示实验 实验四 中断实验 实验五 定时器实验 实验六 串行口实验 实验七 数码管动态显示实验 实验八 矩阵键盘应用实验 实验九 电子时钟 微机原理实验课程,会陆续根据目录更新文章 掌握LED八段

    2024年02月07日
    浏览(40)
  • 实验五 键盘按键与数码管显示(汇编与微机原理)

    实验目的: 熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘的工作原理及识别键盘按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管显示的方法。 实验:       在(2行*8列)小

    2024年02月04日
    浏览(46)
  • 【汇编语言与微机原理】实验五:键盘按键与数码管显示

    熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘工作原理及识别按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管的显示方法。 在2*8(看 着像4*4,实际上是2*8 )的小键盘上按下

    2024年02月16日
    浏览(45)
  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(65)
  • 微机原理 || push & pop 指令 (详解+例题)

    考试真的考了push和pop ,那个加减到底是什么? 考试要记:  PUSH 源    -2       字 操作(以字为单位)     例:   PUSH AL 错   必须 字 为单位   POP    源    +2       一定注意是十进制的2,注意和16进制单位转换 入栈和出栈的次序要符合后进先出原则,即: PUSH和POP一般是

    2024年02月06日
    浏览(42)
  • 微机原理 || MOV 指令使用规则(详细+例题)

    MOV   目标, 源 DST目标操作数: 通用寄存器、段寄存器、存储单元、 立即数 SRC源操作数: 通用寄存器、段寄存器、存储单元 MOV指令使用规则: (1) 目标操作数无立即方式   例如,MOV 03H,AL; 为错误指令 (2)数据传送应注意数据类型的一致(要求等字长) ;或是至少有一个是确定

    2024年02月06日
    浏览(55)
  • EMU8086使用及8086指令系统(微机原理实验)

    熟悉并掌握EMU8086汇编语言编程调试环境; 学习8086寻址方式(立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址)。要求对以上寻址方式进行熟悉,观察不同寻址方式下指令运行结果(每种寻址方式2个实例,

    2023年04月26日
    浏览(53)
  • 【EMU8086使用及8086指令系统】—— 微机原理实验

    熟悉并掌握EMU8086汇编语言编程调试环境; 学习8086寻址方式(立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址)。要求对以上寻址方式进行熟悉,观察不同寻址方式下指令运行结果(每种寻址方式2个实例,

    2024年02月04日
    浏览(41)
  • [ARM 汇编]进阶篇—数据处理指令—2.1.2 逻辑指令

    ARM 汇编语言中的逻辑指令主要用于完成逻辑运算,如按位与、按位或、按位异或等。在本节中,我们将详细介绍 ARM 汇编中的逻辑指令,并通过实例帮助你更好地理解和掌握这些指令。 按位与指令用于将两个寄存器中的值进行按位与运算,并将结果存储在目标寄存器中。基本

    2024年02月07日
    浏览(37)
  • C/C++中的逻辑运算与汇编指令的交互

    ​​​https://pan.quark.cn/s/ac291414101c​​​ 逻辑操作是编程中的基础,它们在C/C++中广泛使用,并在底层汇编语言中由专门的指令对应执行。本文将通过探讨C/C++中的逻辑或运算(​ ​||​ ​)和逻辑非运算(​ ​!​ ​),以及它们如何转换为汇编指令来阐明两者之间的关系。 逻辑

    2024年04月28日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包