汇编语言 ADC指令和SBB指令
ADC指令
ADC(带进位加法)指令将源操作数和进位标志位的值都与目的操作数相加。该指令格式与ADD指令一样,且操作数大小必须相同。
例如下述指令实现两个16位整数相加(FFFFH + 1000H),产生的和分别存入DX:AX
assume cs:code, ds:data, ss:stackdata segmentdb 256 dup(0)
data endsstack segment stackdb 128 dup(0)
stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128mov ax, 0FFFFH ; 存放低16bitmov dx, 1000H ; 高 16bitadd ax, 0FFFFHadc dx, 0 ; 结果 DX = 1001mov ax, 4C00Hint 21Hcode endsend start
例如下述指令实现两个8位整数相加(FFH + FFH),产生的和分别存入DL:AL
assume cs:code, ds:data, ss:stackdata segmentdb 256 dup(0)
data endsstack segment stackdb 128 dup(0)
stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128mov dl, 0mov al, 0FFHadd al, 0FFHadc dl, 0mov ax, 4C00Hint 21Hcode endsend start
总结:
add与adc的区别
add: ax, bx ax = ax + bx
adc: ax, bx ax = ax + bx + CF(进位标志位)
SBB指令
SBB(带借位减法)指令从目的操作数中减去源操作数和进位标志位的值。允许使用的操作数与ADC指令相同。
assume cs:code, ds:data, ss:stackdata segmentdb 256 dup(0)
data endsstack segment stackdb 128 dup(0)
stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128mov dx, 1000mov ax, 0005sub ax, 6 ; AX = FFFHsbb dx, 0 ; DX = 03E7H AX = FFFHmov ax, 4C00Hint 21Hcode endsend start
add与adc的区别
sub: ax, bx ax = ax - bx
sbb: ax, bx ax = ax - bx - CF(进位标志位)
汇编语言 ADC指令和SBB指令相关推荐
- 汇编语言随笔(4)-数据段和栈段与mov,add,sub,div,mul、adc、sbb指令
再次声明,默认采用小端法在内存中存储数据. 在8086PC中,定位一个内存地址需要由段地址和偏移地址一起来完成.注意:当编写指令想要读取某个内存单元中的数据时,需要对偏移地址加上中括号'[ ]'.表示 ...
- 【汇编】流程转移——标志寄存器(ZF—零标志、PF—奇偶标志、SF—符号标志、CF—进位标志、OF—溢出标志)、adc进位加法指令、sbb借位减法指令、cmp指令、DF标志、REP指令、std、cld
11.1 标志寄存器 8086CPU中有14个寄存器,在历来文章中已经介绍过大部分,还有一个标志寄存器,在cpu中也担任着重要的位置. 在标志寄存器中是按位来起作用的,也就是说其中每一位的0和1都有着 ...
- 8086汇编语言寻址方式、基本指令和调试指令
一.80x86/Pentium 各种寻址方式 1.立即寻址 立即寻址方式下,操作数作为立即数直接包含在指令中,紧跟在操作码之后与其一起 存放在代码段区域.因此,立即数总是和操作码一起被存入 CPU 的 ...
- 汇编语言之常见的汇编指令
1.常见汇编指令 1. 传送指令(4个):mov.push.pop.lea. 2. 转移指令(8个):call.jmp.je.jne.jb.jnb.ja.jna. 3. 运算指令(7个):add.su ...
- 【汇编语言】通用数据处理指令——算术运算类指令
通用数据处理指令--算术运算类指令 文章目录 通用数据处理指令--算术运算类指令 一.状态标志 1.进位标志CF(Carry Flag) 2.溢出标志OF(Overflow Flag) 3.零标志ZF ...
- 汇编语言笔记10-CALL和RET指令
☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程序来解决一个复杂的问题. 子程序的框架 1 assume cs:code 2 ...
- [从零学习汇编语言] - BX寄存器与loop指令
文章目录 前言 一. Bx寄存器与[偏移地址] 二. loop指令与jmp指令 1. jmp指令 2. loop指令 三. 一些奇奇怪怪的注意点 1. 汇编源程序的数字问题 2. Debug和Masm ...
- 浅谈neg+sbb指令
neg指令:intel指令手册是这样说明的 IF DEST = 0 THEN CF <- 0; ELSE CF <- 1 就是说,当操作数为0时,cf标志为0,否则cf被置1.(这让我们联 ...
- NEG+SBB指令组合的用处
计算机中数码的表示: 定义-> 正数:原码,反码,补码相同. 负数:原码为其对应正数原码最高符号位取反. 反码为其原码除符号位外都取反. 补码为其原码除符号位外取反加1. 所以最高位符号位都不变 ...
最新文章
- golang中并发sync和channel
- 【EventBus】EventBus 源码解析 ( EventBus 构建 | EventBus 单例获取 | EventBus 构造函数 | EventBus 构建者 )
- BZOJ 3224 普通平衡树 treap or vector
- php 注册自动登录,php – 创建第二个自动登录用户的登录页面
- 服务器zip解压php,服务器端解压缩zip的脚本
- python3中的 input函数_Python3中的input函数
- python logging简单使用
- 在Java eclipse 中Spring Boot工具安装步骤
- mask rcnn数据转换为tfrecord数据
- java给图片增加水印(图片水印,文字水印)
- CVE-2019-0708 微软补丁更新
- 破解"中国裁判文书网"App加密过程
- HCIA-Storage 存储工程师学习笔记——1. 存储技术趋势
- 五级自动驾驶分级_关于确保自动驾驶汽车安全的五件事
- Acwing算法—动态规划
- 北京理工大学计算机科学与技术培养方案,王全玉_北京理工大学计算机学院
- # imshow 报错
- MFC界面开发进入BCGControlBar v30.5时代,Gauge控件全新升级
- 墙都不扶就服你!javaredisson分布式锁
- 服装类APP开发解决痛点