8086CPU常见汇编指令、debug命令
一条指令对应的两个操作数位数必须一致
汇编指令:
1、mov x,y
传送:y到x
x,y:
寄存器,数据
寄存器,寄存器
寄存器,内存物理地址
内存物理地址,寄存器
内存物理地址,数据
寄存器,内存偏移地址(此时段寄存器默认为ds)
内存偏移地址,寄存器(此时段寄存器默认为ds)
内存偏移地址,数据(此时段寄存器默认为ds)
段寄存器,寄存器
寄存器,段寄存器
2、add x,y
加法:x+y保存于x中
x,y:
寄存器,数据
寄存器,寄存器
寄存器,内存物理地址
内存物理地址,寄存器
内存物理地址,数据
寄存器,内存偏移地址
内存偏移地址,寄存器
3、sub x,y
减法:x-y保存于x中
x,y:
寄存器,数据
寄存器,寄存器
寄存器,内存物理地址
内存物理地址,寄存器
寄存器,内存偏移地址
内存偏移地址,寄存器
4、jmp x
x:
物理地址
5、loop
mov cx n
s:
程序段
loop s(先进行cx-1,再进行判断)
loop指令在cx!=0时,自动跳转到s所指的位置
每次跳转cx自动减1(循环计时器只能是cx)
6、push data/寄存器/物理地址1
将data/寄存器/物理地址1中的数据放入ss:sp中,sp=sp-2
7、pop 物理地址1/寄存器
将ss:sp中数据弹出栈,保存于物理地址1/寄存器,sp=sp+2
8086模式的DOS中debug命令
1、r:查看CPU寄存器的内容
2、d:查看内存中的内容
d 段地址:偏移地址
3、e:改写内存中的内容
e 段地址:偏移地址 x x … x
4、u:将内存中的机器指令翻译为汇编指令
u 段地址:偏移地址
5、t:执行一条机器指令
t 执行CS:IP所指向的指令
6、a:以汇编指令的格式在内存中写入一条机器指令
a 段地址:偏移地址
汇编指令
……
a 后不接物理地址汇编指令默认写入数据指针所指地址
7、p
p 使得程序直接跳转到末尾
8、__ 物理地址(待补充)
功能:使程序无条件跳转至指定物理地址
9、db、dw、dd(伪指令)
在内存中定义一个数据段
db(definite byte):定义的每一个数据大小为1个字节
dw(definite word):定义的每一个数据大小为1个字
dd(definite double word):定义的每一个数据大小为2个字
用法:
xxx segment
上述伪指令:data1,…datan
end xxx
10、div x
除法
x:
reg(通用寄存器)
内存单元
x用于保存除数
被除数y默认保存在 ax(累加器) 或 ax与dx中
y为16位时,y被保存于ax中,最后商保存在al,余数保存在ah
y 为32位时,低位被保存于ax中,高位被保存于dx中(此时x只能是16位) ,最后商保存在ax,余数保存在dx
11、ptr xxx
xxx:
db
dw
dd
一般用于指令没有明确要操作的地址空间的大小(无寄存器时)
ptr xxx接在指令之后,表示即将访问的内存大小为xxx
例
add [xxxxh],Eh
表明Eh为字节型数据0E
add ptr dw [xxxxh],Eh
表明Eh为字型数据000E
12、xx yy dup (data)
xx为伪指令db、dw、dd
yy为重复次数
data的单个数据占用内存大小由xx决定
例:
name segment
db n dup (4E)
end name
等价于
name segment
db 4E,… ,4E
end name
共n个4E,每个数据占用空间大小为1个字节
8086CPU常见汇编指令、debug命令相关推荐
- 处理器startup.s 常见汇编指令,伪指令解释 .globl _start .section .data .text .align
.section .data 汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇编指示(Assembler Directive)或伪操作(Pseudo- ...
- 汇编语言—常见汇编指令汇总
(1)mov指令 mov 寄存器 ,数据 如:mov ax ,8 mov 寄存器,寄存器 如:mov ax,bx mov 寄存器, ...
- arm 32 常见汇编指令解释
push: 将一个或多个寄存器的值压入栈中,更新栈指针寄存器.语法示例:push {r1, r2, r3}. add: 执行加法并将结果存储到目标操作数中.语法示例:add r1, r2, #5,将寄 ...
- 汇编语言之常见的汇编指令
1.常见汇编指令 1. 传送指令(4个):mov.push.pop.lea. 2. 转移指令(8个):call.jmp.je.jne.jb.jnb.ja.jna. 3. 运算指令(7个):add.su ...
- 如何执行一条汇编指令
在电脑中执行一条指令主要又三个步骤: (1)在指定地址上写入一条汇编指令 (2)使cs寄存器与ip寄存器指向指令所在的地址 (3)开始执行 (1)在指定地址写入一条汇编指令: 终端上常用的命令有:R命 ...
- 【汇编语言】理解8086CPU中,不同类型的寄存器和汇编指令规则的联系(会继续更新)
0 前言 你是否因为汇编指令繁杂的规则而苦恼呢?作者本人也很烦,因为往往教材中只告诉我们规则,却不告诉我们为什么,没有原因就直接记忆,负担太大,后期灵活运用也增添阻力,因此,我经过自己的思考去为你解释 ...
- 【实验报告】微处理器原理与应用 CPUHomework1.2 上篇【掌握DEBUG基本命令及其功能 查看CPU和内存 用机器指令和汇编指令编程】
实验报告 课程名称:微处理器原理与应用 实验名称:CPUHomework1.2 掌握 DEBUG 基本命令及其功能 文章目录 实验报告 [实验目的] [实验要求] 上篇[查看CPU和内存,用机器指令和 ...
- 汇编实验:DEBUG命令调试
目录 实验名称:DEBUG命令调试 一.实验目的及要求 二.实验环境 三.实验内容 四.实验过程 r 命令:查看寄存器的值 2.d 命令查看内存地址之中的数字 4.e命令:把给定的数据送到指定地址开始 ...
- windows debug下验证汇编指令中的mov指令传送数据
一.知识储备 1.8086CPU是16位结构,有16根数据线,20根地址线.16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据. 什么是字? 在这个特定计算机中,字是其用来一次 ...
最新文章
- Actipro WPF Studio破解
- 前端开发面试题总结之——JAVASCRIPT(一)
- 采用CreateThread()创建多线程程序
- 前端学习(2320):typeScript的概述和安装
- java右移位_java 、移位操作方法
- asp.net web开发框架_用Python开发一个Web框架
- LeetCode--3. 无重复字符的最长子串(双指针)
- php 什么是函数式编程,函数式编程的介绍和归纳总结(附代码)
- C# 判断字符串为空的4种方法及效率
- atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 a--g v1 q31.xlsx
- paip.c++ bcb 字符串String分割split 为 TStringList 不对的的问题解决..
- godot读写本地文件
- python单位根检验看结果_python做adf检验
- 在LINUX下面建立GPRS无线MODEM拨号
- j1900做网站服务器,j1900可以跟云服务器
- jenkins 日常踩坑 和 瞎扯解决办法
- 上瘾读书笔记:让用户养成使用习惯的四大产品逻辑
- python爬虫学习笔记一:网络爬虫入门
- PDCCH-based WUS signal
- PHP人民币小写数字转大写中文
热门文章
- C03-Java同步实践加强班第5周上机任务
- 究竟什么能使得生活变得圆满?
- 转发: Visual Studio 2005常用插件
- 【python数据挖掘课程】二十四.KMeans文本聚类分析互动百科语料
- 【数据结构与算法】之深入解析“游乐园的迷宫”的求解思路与算法示例
- 12.2 全局CSS样式
- ALGO-1 区间k大数查询
- Maximum Profit Aizu - ALDS1_1_D
- 解决安装ROS 时rosdep update 问题(time out)
- 【MFC】自绘对话框动画效果的状态栏