文章目录

  • 前言
  • 1. 通用寄存器
  • 2. 字在寄存器中的存储
    • 2.1 两个单位
    • 2.2 基础的汇编指令
      • 2.2.1 MOV指令
      • 2.2.2 ADD指令
      • 2.2.3 传送运算规范
  • 3. 相关练习题

前言

本篇文章所涉及的CPU为8086CPU

在CPU内部有许多的器件,这些器件相互配合,共同实现CPU的功能

CPU中主要的器件分别为:

  1. 运算器(信息处理计算)
  2. 寄存器(信息存储)
  3. 控制器(控制各种器件进行工作)

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.常见汇编指令 1. 传送指令(4个):mov.push.pop.lea. 2. 转移指令(8个):call.jmp.je.jne.jb.jnb.ja.jna. 3. 运算指令(7个):add.su ...

  2. 汇编怎么从内存地址写入连续的数字_汇编语言 第一章 基础知识

    系列文章见:Neptune 第一章 基础知识 1.1 机器语言 机器语言是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令. 由图可见,机器语言是十分晦涩难懂和不易查错的. 1.2 汇编 ...

  3. arm底层奠定基础 (汇编)

    arm底层汇编 目录 前言 arm发展简介 32位 ARMv7 汇编指令 中断向量表 解惑 armv8 64位 前言 在学习和工作中,遇到关于嵌入式程序运行的困惑,通过底层汇编,可以知道arm怎么做到 ...

  4. go语言调度器源代码情景分析之五:汇编指令

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第4小节. 汇编语言是每位后端程序员都应该掌握的一门语言,因为学会了汇编语言,不管是对我们调试程序还是研究与理解计算机底层的一些运 ...

  5. 汇编语言基础--汇编操作指令概述

    本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素:       在"计算机处理器(CPU)基础&quo ...

  6. 【汇编语言】理解8086CPU中,不同类型的寄存器和汇编指令规则的联系(会继续更新)

    0 前言 你是否因为汇编指令繁杂的规则而苦恼呢?作者本人也很烦,因为往往教材中只告诉我们规则,却不告诉我们为什么,没有原因就直接记忆,负担太大,后期灵活运用也增添阻力,因此,我经过自己的思考去为你解释 ...

  7. 汇编指令对应的机器码_汇编语言输出“welcome to you!”

    基础知识 汇编语言指令组成 汇编指令:机器码的助记符,有对应的机器码. 伪指令:没有对应的机器码,编译器执行,机器不执行. 其他符号:如+-*/有编译器识别,无对应机器码. CPU与外部器件交互需要 ...

  8. 汇编指令对应的机器码_二进制如何变成汇编语言

    计算机基础课第 26 期分享 转载请联系授权(微信ID:qianpangzi0206) 01 从硬件到软件 之前我们把重点放在硬件 - 组成计算机的物理组件,比如电,电路,寄存器,RAM,ALU,CP ...

  9. [汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。

    实验一 实验任务: 查看CPU和内存,用机器指令和汇编指令编程. 实验内容: (1)实验代码: 开始执行命令: (2)实验代码: (3)实验代码: 找到了,日期为:01/01/92,这个是虚拟机dos ...

最新文章

  1. android6 运行,Xbox串流开放测试,只需安卓6即可运行
  2. 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗
  3. 同事就是同事,职场没有兄弟姐妹
  4. flash动画制作常用代码
  5. struts2配置问题
  6. 织梦响应式教育机构官网网站模板
  7. 微服务治理之Eureka--源码浅析
  8. javascript window.document
  9. UIImageView三种方式 和 位置分布
  10. 网络神采 网站数据采集软件
  11. 出国留学成绩要求主要看点在雅思
  12. python中栈是先进后出_python中的栈 LIFO类似于堆即先进后出
  13. 能预防及治疗癌症?哈佛研发出可侦测基因缺陷的人工智能系统
  14. MMDeteceion之系列一(环境安装、模型测试、训练以及模型后处理工具)
  15. LaTeX记录 —— 特殊符号
  16. 掌握c语言编程是什么程度,学习嵌入式C语言要掌握到什么程度?
  17. 人人车总部维权现场:员工无奈强冲 维权群近千人(图)
  18. 复旦大学计算机网络期末考试试题,复旦大学学习计算机科学技术学院期末试题练习题.doc...
  19. 论坛系统后端的设计与实现
  20. 在vue中实现使用webscoket进行心跳检测机制

热门文章

  1. java安装(找不到jre还苦恼的同志们)-彗星,请放弃jre
  2. bat批处理脚本大全
  3. C# 注册机功能开发,机器码设计
  4. 贝叶斯方法指北|连丢 99 次硬币都为正面,那第 100 次是正面还是反面?
  5. 点云降采样(DownSampling)
  6. 自动化测试框架FitNesse -- 搭建CsLim
  7. ios html dom bounce,使用inobounce移除iOS的bounce效果
  8. 最常用的中文停止词(stop word)列表
  9. 企业级即时通讯软件,你还需要了解这些!
  10. labelme json文件转换成mask图片代码