当前位置: 首页 > news >正文

8086汇编常见寄存器与指令

本文为学习书籍《汇编语言(第4版)》后的小结。

1、寄存器

序号寄存器描述
1ax运算寄存器
2bx地址寄存器,偏移地址
3cx计数寄存器,loop的结束条件,jcxz的跳转条件
4dx运算寄存器
5cs段地址,指令执行段地址
6ss段地址,栈的段地址
7ds段地址,数据的段地址
8es段地址,extra,扩展的段地址寄存器
9ip偏移地址,instruction,指令偏移地址
10sp偏移地址,stack pointer,栈偏移地址
11si偏移地址,source,源
12di偏移地址,destination,目的
13bp偏移地址,base pointer,基地址
14标记寄存器位代表标记,见标记位列表

2、指令

指令

类型

指令说明

add、adc加法,adc为带进位的加法
sub、sbb减法,sbb为带进位的减法
mul

乘法:
-8位乘法:一个放在al,另一个放在8位reg或内存字节单元中,

                结果16位,存放在ax中;
-16位乘法:一个放在ax,另一个放在16位reg或内存字单元中,

                结果32位,高位放在dx中,低位放在ax中。

div除法:
8位除法:被除数16位,放在ax中,结果al中存商,ah中存余数;
16位除法:被除数32位,dx存高16位,ax存低16位,结果ax存商,dx存余数
andand al,00111011B
oror al,00111011B
shl和shr逻辑左移与右移, 用0补位
inc自增1
dec自减1

mov
movsb

rep movsb 循环(cx)个字符的传送。
将ds:[si]地址的内容拷贝到es:[di],如果df=0(cld),si和di自增;

df=1(std),si和di自减

movswmovsw 一个拷贝1个字(两个字节,32位),每次完成si和di +2或-2
rep与movsb或movsw搭配使用
push、pop
pushf、popfpush flag、pop flag
dupdb 16 dup (0) 将此块内容设置为16个为0的字节
dw 16 dup (0) .....16个为0的字(2个字节)
dd 16 dup (0) .....16个为0的双字(4个字节)

jmp
jcxzcx==zero跳转

je、jb、ja、

jnb、jna、jne

与cmp搭配
loopcx==0结束循环
call与retip寄存器会push和pop
int中断 与 iretint:
(1)取中断类型码n;
(2)标志寄存器入栈;
(3)IF=0,TF=0;
(4)CS入栈,IP入栈;
(5)修改CS和IP至n号中断码对应的地址
iret:
(1)pop IP
(2)pop CS
(3)popf

cld、std与movsb或movsw搭配使用:
cld,将df设置为0,则si和di自增(或+2);
std,将df设置为1,则si和di自减(或-2);
cli、stisti,设置IF=1,在中断处理程序中可处理可屏蔽中断;
cli,设置IF=0,在进入中断处理程序后,进制其他的可屏蔽中断。
nop占位,和offset搭配,通常用来计算某段代码的长度
http://www.lryc.cn/news/479177.html

相关文章:

  • Group By、Having用法总结(常见踩雷点总结—SQL)
  • Redis持久化机制——针对实习面试
  • Windows系统服务器怎么设置远程连接?详细步骤
  • 【Rust设计模式之建造者模式】
  • 2024中国移动(南京)智算大会暨人工智能产业大会即将盛大启幕
  • 计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)
  • CosyVoice文本转语音:轻松创造个性化音频
  • 法语nous sommes
  • 《化学进展》
  • CNN和RCNN的关系和区别
  • Chromium 进程降权和提权模拟示例c++
  • 【测试语言篇一】Python进阶篇:内置容器数据类型
  • 湘潭大学软件工程专业选修 SOA 期末考试复习(二)
  • 改进的正弦余弦算法复现
  • Day13杨辉三角
  • 【c知道】Hadoop工作原理。
  • React.lazy() 懒加载
  • 【自学笔记】神经网络(1)
  • c#————扩展方法
  • 前向-后向卡尔曼滤波器(Forward-Backward Kalman Filter)资料汇总
  • 云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例
  • 详解Rust标准库:BTreeMap
  • .NET WPF CommunityToolkit.Mvvm框架
  • 微信小程序使用阿里巴巴矢量图标库正确姿势
  • 【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
  • Java基础Day-Thirteen
  • LangChain实际应用
  • 【数据结构】哈希/散列表
  • flutter 项目初建碰到的控制台报错无法启动问题
  • Java字符串深度解析:String的实现、常量池与性能优化