专栏首页乱码三千8086汇编语言之各个通用寄存器的作用

8086汇编语言之各个通用寄存器的作用

在8086cpu通用寄存器

  • 寄存器AX: 用于存放数据 (源代码编写时不能以字母开头,可在开头补上0)
    • 比如 mov ax, ffffh 应该写成 mov ax, 0ffffh 否则编译报错
  • 寄存器BX: 另外还用于存放数据段偏移地址 初始值为源代码大小
  • 寄存器CX: 另外还用于存放loop循环计数
  • 寄存器DX: 另外还用于存放累加结果
  • 寄存器EX:备用寄存器

BX存在的意义

1. asm编译器无法识别中括号,mov ax,[0]编译时会默认去除中括号.使用bx替代可以解决这个问题,如果在debug模式下使用-a命令输入中括号则没有问题,可以正常识别

;错误写法:编译器无法识别[0],会直接取值为0 而不是偏移地址0所对应的内容
assumme cs:code
code segment
	mov ax,2000h
	mov ds,ax
	mov al,[0]
	mov bl,[1]
	mov cl,[2]
	mov dl,[3]
	
	mov ax,4c00h
	int 21h
code ends
end

问题: 那如果非要以带中括号的方式进行编写可以吗? 答案是:需要带上段地址ds,如下:

assumme cs:code
code segment
	mov ax,2000h
	mov ds,ax
	mov al,ds:[0] ;其中ds称作段前缀
	mov bl,ds:[1]
	mov cl,ds:[2]
	mov dl,ds:[3]
	
	mov ax,4c00h
	int 21h
code ends
end

本文分享自微信公众号 - 乱码三千(infree6),作者:有瓣知识

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 8086汇编语言——交换寄存器中的内容

    zy010101
  • Linux 从头学 01:CPU 是如何执行一条指令的?

    这两年多以来,我的本职工作重心一直是在 x86 Linux 系统这一块,从驱动到中间层,再到应用层的开发。

    IOT物联网小镇
  • 汇编语言学习

       7、1Byte = 8bit ;    1KB = 1024B ;  1MB = 1024KB ;   1GB = 1024MB

    tandaxia
  • 爱了爱了,这篇寄存器讲的有点意思

    下面我们就来介绍一下关于寄存器的相关内容。我们知道,寄存器是 CPU 内部的构造,它主要用于信息的存储。除此之外,CPU 内部还有运算器,负责处理数据;控制器控...

    C语言与CPP编程
  • 16位汇编第第四讲常用的7种寻址方式

    常用的7中寻址方式 昨天稍微讲了一下,立即数寻址,今天继续讲解寻址方式. (注意,这个属于简陋版的,写了4个小时的博客,也就是第一版,保存了一下,但是博客出问题...

    IBinary
  • 《汇编语言》——笔记(一)

    在讲汇编语言之前,先介绍下机器语言。机器语言是机器指令的集合。电子计算机的机器指令是一列二进制数字,计算机将转变高低电平,来驱动电子器件。

    天钧
  • 吹弹牛皮之C++ 汇编指令

    本节及接下来的研究内容,着重的是x64的汇编。x64汇编根据编译器的不同,又有两种书写格式。

    用户7698595
  • Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

    前两篇文章,我们一起学习了 8086 处理器中关于 CPU、内存的基本使用方式,重点对段寄存器和内存的寻址方式进行了介绍。

    IOT物联网小镇
  • CSAPP第三章(1)

    计算机的发展是很迅猛的,短短的几十年,社会发生了天翻地覆的变化。这也离不开处理器芯片的高速发展。下面就简单的罗列一下处理器芯片的发展历程。

    HeaiKun
  • 未整理的计组复习笔记?

    计组是我听过的最脑阔疼的课。不过已经考过了orz以及,大家学的计组内容可能不一样,这篇复习包括的内容应该是比较简略的。

    gojam
  • 汇编语言从入门到精通-通用寄存器功能的说明

      数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

    墨文
  • 《深入理解计算机系统》阅读笔记--程序的机器级表示(上)

    编译器基于编程语言的规则,目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC c语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的...

    coders
  • 16位汇编第一讲简介

                     汇编第一讲 汇编简介 一.什么是汇编   汇编语言他是计算机语言,计算机语言通俗点说就是人类和计算机(也就是CPU)沟通的...

    IBinary
  • 程序的机器级表示

    预处理阶段:预处理器cpp根据编译文件以“#”开头的命令,读取系统头文件stdio.h(.h结尾的表示头文件,.c表示可执行文件)的内容,并把它插入到程序文本中...

    大眼瞪小眼
  • 汇编基础

    ​ cup与所有内存之间:地址总线,数据总线,控制总线,每条线对应不同信息,指令与数据分开

    Dean0731
  • Linux从头学02:x86中内存【段寻址】方式的来龙去脉

    饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史:

    IOT物联网小镇
  • 8086汇编语言之函数的声明和调用

    由于print函数默认执行,为了保证在call时才执行, 咱们将print函数代码移至中断后:

    乱码三千
  • 16位汇编语言第二讲系统调用原理,以及各个寄存器详解

       16位汇编语言第二讲系统调用原理,以及各个寄存器详解 昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题?   hel...

    IBinary
  • 8086汇编语言之debug模式常用指令介绍

    上面为 (段地址:偏移地址) 查看方式。D命令默认会显示寻址地址开始的后128个内存单元的内容,以16进制的方式显示(每个内存单元8位,一行最多16个内存单元)...

    乱码三千

扫码关注云+社区

领取腾讯云代金券