【汇编语言】通用寄存器和基础汇编指令
文章目录
- 前言
- 1. 通用寄存器
- 2. 字在寄存器中的存储
- 2.1 两个单位
- 2.2 基础的汇编指令
- 2.2.1 MOV指令
- 2.2.2 ADD指令
- 2.2.3 传送运算规范
- 3. 相关练习题
前言
本篇文章所涉及的CPU为8086CPU
在CPU内部有许多的器件,这些器件相互配合,共同实现CPU的功能
CPU中主要的器件分别为:
- 运算器(信息处理计算)
- 寄存器(信息存储)
- 控制器(控制各种器件进行工作)
CPU与内存之间通过总线进行交互,称之为外部总线
CPU内部的器件之间也通过总线进行连接,称为内部总线
而CPU内部,寄存器是主要的器件,不同的CPU寄存器个数,结构是不一样的。
1. 通用寄存器
8086的CPU所有的寄存器都是16位的,可以存放两个字节(Byte)的数据
而AX,BX,CX,DX四个寄存器可以用于存放一般性的数据,所以这四个寄存器被称之为通用寄存器。
以AX寄存器为例,其他的BX寄存器,CX寄存器,DX寄存器也都一样。
AX 本身是一个 16 位的寄存器,但是这个寄存器可以再分为 AH 和 AL 两个寄存器 AH 和 AL 寄存器都为 8 位的寄存器,同样
- BX 可以分为 BH 和 BL
- CX 可以分为 CH 和 CL
- DX 可以分为 DH 和 DL
而如果将一个16 位的寄存器分成两个 8 位的寄存器后,这两个8位的寄存器是相互独立的。
H 为 High,代表原寄存器的高字节
L 为 Low,代表原寄存器的低字节
当把这个寄存器看作一个AX的时候,寄存器中存储的数字为:
AX:0111 0001 1111 1111
当寄存器中的数值加一的时候,寄存器中的数值会变为:
AX:0111 0010 0000 0000
因为AX是一个整体,所以AX + 1,会影响所有的数字。
当把寄存器看作AH 和 AL两个寄存器时,寄存器中存储的数字为:
AH:0111 0001
AL:1111 1111
此时 AL + 1,寄存器的变化为:
AH:0111 0001
AL:0000 0000
AL 因为运算发生的进位并不会进到 AH寄存器中,因为两个寄存器独立的,互不影响。
当然,这个溢出的 1 不会被放着不管。标志寄存器会记录下溢出的信息
2. 字在寄存器中的存储
2.1 两个单位
8086CPU一次可以处理两种尺寸的类型,如下:
字节:Byte, 8个bit,可以存在8位的寄存器中。
字:Word,16个bit,由两个字节构成,这两个字节分别称为高位字节和低位字节。
2.2 基础的汇编指令
汇编指令不分大小写
mov 和 MOV 是等价的
2.2.1 MOV指令
mov指令的最基础的一种用法,将数字送入寄存器
格式为: mov 寄存器, 数值
MOV AX, 18H ; 将数值 18H 送入寄存器 AX
; 类似于 C语言中: AX = 10H
MOV AH, 01H ; 将数值 01H 送入寄存器 AH
; 类似于 C语言中: AH = 01H
MOV AL, 02H ; 将数值 02H 送入寄存器 AL
; 类似于 C语言中: AL = 02H
mov指令的基础用法,将寄存器中的内容送入其他寄存器
格式为:mov 寄存器, 寄存器
MOV AX, ABCDH ; 将数值 ABCD 送入寄存器 AX
MOV BX, AX ; 将寄存器AX中的内容送入寄存器BX
; 类似于C语言中 BX = AX
2.2.2 ADD指令
ADD指令最基础的一种用法,对寄存器进行加法操作
格式为:ADD 寄存器, 数值
ADD AX, 1111H ;AX寄存器中的内容加上 1111H
; 类似于C语言中: AX = AX + 1111H
ADD指令基础用法,一个寄存器加上另外一个寄存器中的数值
格式为:ADD 寄存器,寄存器
ADD AX, BX; AX寄存器中的内容加上BX寄存器中的内容
; 类似于C语言中: AX = AX + BX
2.2.3 传送运算规范
在进行数字传送或运算时,要注意指令的两个操作对象的位数应当是一致的。
正确示例:
mov ax, bx ; ax (16bit), bx (16bit)
mov al, bh ; al (8bit), bh (8bit)
add ax, abcdH; ax (16bit), abcdH(16bit)
add bl, 88H ; bl (8bit), 88H(8bit)
错误示例:
mov ax, bl ; 将8位寄存器中的数据传送到16位寄存器中
mov al, ABCDH; 将 16bit 的数字的传送入 8 位寄存器中
add al, 800H ; 将高于 8 bit 的数字加到一个 8 bit 的寄存器中
3. 相关练习题
写出每条汇编指令执行之后,相关寄存器的值
答案:
【汇编语言】通用寄存器和基础汇编指令相关推荐
- 汇编语言之常见的汇编指令
1.常见汇编指令 1. 传送指令(4个):mov.push.pop.lea. 2. 转移指令(8个):call.jmp.je.jne.jb.jnb.ja.jna. 3. 运算指令(7个):add.su ...
- 汇编怎么从内存地址写入连续的数字_汇编语言 第一章 基础知识
系列文章见:Neptune 第一章 基础知识 1.1 机器语言 机器语言是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令. 由图可见,机器语言是十分晦涩难懂和不易查错的. 1.2 汇编 ...
- arm底层奠定基础 (汇编)
arm底层汇编 目录 前言 arm发展简介 32位 ARMv7 汇编指令 中断向量表 解惑 armv8 64位 前言 在学习和工作中,遇到关于嵌入式程序运行的困惑,通过底层汇编,可以知道arm怎么做到 ...
- go语言调度器源代码情景分析之五:汇编指令
本文是<go调度器源代码情景分析>系列 第一章 预备知识的第4小节. 汇编语言是每位后端程序员都应该掌握的一门语言,因为学会了汇编语言,不管是对我们调试程序还是研究与理解计算机底层的一些运 ...
- 汇编语言基础--汇编操作指令概述
本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素: 在"计算机处理器(CPU)基础&quo ...
- 【汇编语言】理解8086CPU中,不同类型的寄存器和汇编指令规则的联系(会继续更新)
0 前言 你是否因为汇编指令繁杂的规则而苦恼呢?作者本人也很烦,因为往往教材中只告诉我们规则,却不告诉我们为什么,没有原因就直接记忆,负担太大,后期灵活运用也增添阻力,因此,我经过自己的思考去为你解释 ...
- 汇编指令对应的机器码_汇编语言输出“welcome to you!”
基础知识 汇编语言指令组成 汇编指令:机器码的助记符,有对应的机器码. 伪指令:没有对应的机器码,编译器执行,机器不执行. 其他符号:如+-*/有编译器识别,无对应机器码. CPU与外部器件交互需要 ...
- 汇编指令对应的机器码_二进制如何变成汇编语言
计算机基础课第 26 期分享 转载请联系授权(微信ID:qianpangzi0206) 01 从硬件到软件 之前我们把重点放在硬件 - 组成计算机的物理组件,比如电,电路,寄存器,RAM,ALU,CP ...
- [汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。
实验一 实验任务: 查看CPU和内存,用机器指令和汇编指令编程. 实验内容: (1)实验代码: 开始执行命令: (2)实验代码: (3)实验代码: 找到了,日期为:01/01/92,这个是虚拟机dos ...
最新文章
- android6 运行,Xbox串流开放测试,只需安卓6即可运行
- 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗
- 同事就是同事,职场没有兄弟姐妹
- flash动画制作常用代码
- struts2配置问题
- 织梦响应式教育机构官网网站模板
- 微服务治理之Eureka--源码浅析
- javascript window.document
- UIImageView三种方式 和 位置分布
- 网络神采 网站数据采集软件
- 出国留学成绩要求主要看点在雅思
- python中栈是先进后出_python中的栈 LIFO类似于堆即先进后出
- 能预防及治疗癌症?哈佛研发出可侦测基因缺陷的人工智能系统
- MMDeteceion之系列一(环境安装、模型测试、训练以及模型后处理工具)
- LaTeX记录 —— 特殊符号
- 掌握c语言编程是什么程度,学习嵌入式C语言要掌握到什么程度?
- 人人车总部维权现场:员工无奈强冲 维权群近千人(图)
- 复旦大学计算机网络期末考试试题,复旦大学学习计算机科学技术学院期末试题练习题.doc...
- 论坛系统后端的设计与实现
- 在vue中实现使用webscoket进行心跳检测机制