文档章节

初学 Delphi 嵌入汇编[8] - 8 位寄存器、16 位寄存器与 32 位寄存器

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 435
阅读 5
收藏 0
点赞 0
评论 0
王爽老师书上说, CPU 内部主要就是寄存器.
现在我们在 32 位的系统下工作, 当然主要使用的是 32 位寄存器; 那它和 8 位、16 位的寄存器又有什么关系呢?
从网上找到一个简洁明了的图片:




EAX 是 32 位的, 也就是 4 个字节大小; 它的低两位就是 AX;
AX 是 16 位的, 又分 2 个字节; 它的高字节是 AH、低字节是 AL;
AH 与 AL 是 8 位的.
这样就兼容了以前的 16 位与 8 位.

同理,
EBX 就包含着 BX BH BL;
ECX 就包含着 CX CH CL;
EDX 就包含着 DX DH DL;

好啊, 一下子认识了那么多寄存器!


按照这个道理, 如果给 EAX 赋了值, 那么 AX AH AL 也就都有了值;
如果给 AL 赋了值, 那么 AX EAX 也就有了值.
//测试1
var
  i: integer;  {4 字节、32 位}
  w: word;     {2 字节、16 位}
  b1,b2: byte; {1 字节、 4 位}
begin
  i  := maxint;
  w  := 0;
  b1 := 0;
  b2 := 0;

  asm
    mov ecx, i
    mov w, cx
    mov b1, ch
    mov b2, cl
  end;

  ShowMessage(Format('w=%d; b1=%d; b2=%d',[w,b1,b2]));

{结果显示: w=65535; b1=255; b2=255

  果然没错, 给 ecx 赋值后, cx ch cl 都有值了!
}
end;

 
 
 
 
 

 

 

  
//测试2 var i: integer; {4 字节、32 位} w: word; {2 字节、16 位} b: byte; {1 字节、 4 位} begin b := 255; i := 0; w := 0; asm mov cl, b mov w, cx mov i, ecx end; ShowMessage(Format('i=%d; w=%d',[i,w])); {结果显示: i=255; w=255 这好像是没有问题的, 我用 al ax eax 三个寄存器测试也是如此; 但用 dl dx edx 测试, 就会有意外的结果, 奇怪呀! } end;

本文转载自:http://www.cnblogs.com/del/archive/2008/01/24/1051944.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
进入Android Dalvik虚拟机之Dalvik汇编语言基础

Dalvik虚拟机为自己专门设计了一套指令集,并且制定了自己的指令格式与调用规范。我们将Dalvik指令集组成的代码称为Dalvik汇编代码,将这种代码表示的语言称为Dalvik汇编语言(Dalvik汇编语言...

柳哥 ⋅ 2015/01/09 ⋅ 0

嵌入式开发笔记(三)ARM基础知识

1.ARM的编程模式 1.1当ARM 采用的是32位架构. ARM 约定: Byte : 8 bits Halfword(半字) :16 bits (2 byte) Word : 32 bits (4 byte) 联想: 数据位宽4 byte,地址映射数据线32条 注意:Wor...

每天在改变 ⋅ 2016/12/24 ⋅ 0

常用 arm 汇编指令

ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程 ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常...

cicue ⋅ 2014/05/16 ⋅ 0

反汇编学习笔记2 - 函数的本质

函数本质 关于CPU的补充 寄存器 CPU除了有控制器、运算器还有寄存器。其中寄存器的作用就是进行数据的临时存储。 CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进...

sqatm ⋅ 05/02 ⋅ 0

05-ARM体系结构与常用汇编指令

一、ARM体系结构  ARM(Advanced RISC Machines) ,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM 处理器是一种低功耗高性能的 32 位R...

梦想成大牛 ⋅ 01/05 ⋅ 0

8086汇编学习之基础知识、通用寄存器、CS/IP寄存器与Debug的使用

一、基本概念: 1、汇编语言的组成: 汇编指令+伪指令+符号体系 汇编指令:机器码的助记符(因为机器码难以记忆)通过编译器翻译成机器指令,每一个汇编指令对应一个机器指令(机器码); 伪...

apollon_krj ⋅ 2017/04/23 ⋅ 0

神经网络arm neon加速实现

本文参考整理了以下文章: http://blog.csdn.net/may0324/article/details/72847800 http://blog.csdn.net/chshplp_liaoping/article/details/12752749 http://blog.csdn.net/charleslei/art......

fuwenyan ⋅ 2017/12/13 ⋅ 0

32位CPU寄存器

4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄...

王海峰 ⋅ 2010/02/25 ⋅ 0

硬件开发之mcu

架构 做嵌入式硬件开发,要以某个控制器为核心,引出其它外围器件。主流上可以按功能强弱分类为 51系列8位mcu——cortex Mx系列32位mcu——cortex A系列 SoC,其中51是x86指令,cortex是arm...

心翔 ⋅ 2016/06/14 ⋅ 0

一些基本概念

1,什么是逆向工程,什么是反汇编? 逆向工程:产品开发都是从设计到产品的一个过程;而逆向工程,顾名思义就是从产品到设计的一个分析过程。在计算机软件领域,所谓的逆向工程,指的是逆向人...

enimey ⋅ 2013/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

监控各项服务

比如有三个服务, 为了减少故障时间,增加监控任务,使用linux的 crontab 实现. 步骤: 1,每个服务写一个ping接口 监控如下内容: 1,HouseServer 是否正常运行,所以需要增加一个ping的接口 ; http...

黄威 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

nodejs __proto__跟prototype

前言 nodejs中完全没有class的这个概念,这点跟PHP,JAVA等面向对象的语言很不一样,没有class跟object的区分,那么nodejs是怎么样实现继承的呢? 对象 对象是由属性跟方法组成的一个东西,就...

Ai5tbb ⋅ 昨天 ⋅ 0

Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库

Q: Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库 A: 执行以下2条命令解决: apt-get install php-mysql service apache2 restart php -m 执行后会多以下4个模块: mysqli mysqlnd...

SamXIAO ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部