文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 435
阅读 5
收藏 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
博文 2011
码字总数 14107
作品 0
深圳
程序员
进入Android Dalvik虚拟机之Dalvik汇编语言基础

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

柳哥
2015/01/09
0
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
34
0
汇编语言程序设计读书笔记(GAS版)

IA-32平台的寄存器: 寄存器 描述 通用 8个32位寄存器,用于存储正在处理的数据 段 6个16位寄存器,用于处理内存访问 指令指针 单一的32位寄存器,指向要执行的下一条指令码 浮点数据 8个80位...

ryanliue
07/24
0
0
反汇编学习笔记2 - 函数的本质

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

sqatm
05/02
0
0
05-ARM体系结构与常用汇编指令

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

梦想成大牛
01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
23分钟前
1
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
26分钟前
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
1
0
OpenCV VideoCapture.get()参数详解

param define cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引 cv2.VideoCapture.get(2) 视频文件的相对位置(...

NateHuang
今天
0
0
java基础知识,小栗子

来操作一下数组.....注意带参数的变长数组的使用. package com.avatus;import java.util.Random;import java.util.Scanner;public class Main { public static void main(St...

Oh_really
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部