譬如 EAX AX AH AL 四个储存器, 真实存在的其实只有一个 EAX, AX AH AL 不过是不同的访问方式.
11111111 11111111 11111111 11111111 : EAX
11111111 11111111 11111111 11111111 : AX
11111111 11111111 11111111 11111111 : AH
11111111 11111111 11111111 11111111 : AL


//譬如 AX 是一个16位2字节储存器, 它能接受的最大整数是 65535
{下面函数会返回 65535}
function Fun: Integer;
asmmov ax, 65535 {给 AX 赋值就是给 EAX 赋值}
end;{下面函数会出错}
function Fun: Integer;
asmmov ax, 65536 {超出了 AX 的容量}
end;//同样给 AL AH 赋值不能超过 255
{下面函数会返回 255}
function Fun: Integer;
asmmov al, 255
end;{下面函数会返回 65280}
function Fun: Integer;
asmmov ah, 255
end;{为什么不是 255? 因为给 AH 赋值 255 后, EAX 中的值是 00000000 00000000 11111111 000000002}//上面演示的是通过立即数(常量)赋值, 通过变量也是如此; 但在其他运算中会不会溢出是 CPU 之前不会知道的, 譬如:
{下面的函数不会出错, 但返回的是 0 }
function Fun: Integer;
asmmov eax, 4294967295 {这是 eax 所能接受的最大整数}add eax, 1          {再 +1 就放不下了}
end;{因为结果会是: 1 00000000 00000000 00000000 000000002; EAX 只能放下32位, 前面的一位就被忽略了.}//如果 AX 溢出, EAX 会不会接着?
{下面的函数也会返回 0 , 看来不会进位到 EAX; AX 虽然是 EAX 的一部分, 但使用时也是相对独立的}
function Fun: Integer;
asmmov ax, 65535add ax, 1
end;//AH AL 也是如此
{返回 0}
function Fun: Integer;
asmmov al, 255add al, 1
end;//对于负数呢?{下面函数不会有问题, 返回 -1 }
function Fun: Integer;
asmmov eax, -1
end;{它们能接受的最小负整数分别是: }
function Fun: Integer;
asmmov al,  -256mov ah,  -256mov ax,  -63356mov eax, -4294967296
end;
{再小于这个数字就会报错! }//但它们的返回值缺不能所愿, 譬如:
{下面函数会返回 0 }
function Fun: Integer;
asmmov eax, -4294967296
end;{这个好理解, 函数的返回值是 Integer; Integer 的最小值是 -2147483648; 怎么可能放得下 -4294967296? 又被忽略了.}//其他情况也大概如此, 现在给 AX 一个绝对放得下的一个值: -1
{竟然返回一个正数: 65535, 为什么?}
function Fun: Integer;
asmmov ax, -1
end;{因为 -1 在 AX 中被存为: 11111111 111111112;这样 EAX 的值是: 00000000 00000000 11111111 111111112;EAX 的最高位只有是 1 才有可能是个负数, 现在 EAX 中的值就是: 65535
}//下面两个函数也是同样的道理:{返回 255}
function Fun: Integer;
asmmov al, -1
end;{返回 65280}
function Fun: Integer;
asmmov ah, -1
end;//其他允许单独访问低16位和低8位的32位寄存器, 情况肯定也是如此.

初学 Delphi 嵌入汇编[29] - 寄存器所能接受的数值范围相关推荐

  1. 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

    前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了. 譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX; 另外提前来个列表 ...

  2. 初学 Delphi 嵌入汇编[10] - 函数返回值与寄存器

    返回类型 寄存位置 Char.Byte AL 寄存器 SmallInt.Word AX 寄存器 Integer.LongWord.AnsiString.Pointer.Class EAX 寄存器 Re ...

  3. 初学 Delphi 嵌入汇编[27] - XCHG 指令: 交换寄存器的内容

    为什么80%的码农都做不了架构师?>>>    //XCHG 指令: 交换寄存器的内容 varx,y: Integer; beginx := 1; y := 9;asmmov eax ...

  4. 初学 Delphi 嵌入汇编[9] - asm 可以代替 begin

    //可以用 asm 代替 begin function Fun(x: Integer): Integer; asmmov eax, xinc eax end; {汇编中的 inc 指令和 Delphi ...

  5. 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言

    非科班出身, 现在才接触汇编, 惭愧呀, 好好学!  主选课本是清华大学王爽老师的<汇编语言>. 推荐 王爽老师的汇编网 汇编语言之前是机器语言. 机器语言是机器指令的集合, 机器指令是一 ...

  6. 初学 Delphi 嵌入汇编[12] - 在汇编代码中可以直接使用 Result

    为什么80%的码农都做不了架构师?>>>    //在汇编代码中使用 Result function Fun(x: Integer): Integer; asmmov ecx, &a ...

  7. 初学 Delphi 嵌入汇编[18] - SHL 与 SHR

    为什么80%的码农都做不了架构师?>>>    汇编中的SHL(左移).SHR(右移)命令也是和 Delphi 一样的. varByteNum: Byte; begin//右移 sh ...

  8. 初学 Delphi 嵌入汇编[26] - 大小写字母转换

    //小写字母转大写字母 function Fun1(C: Char): Char; asmsub C, 32//sub C, 'a'-'A' {竟也可以这样写} end;//大写字母转小写字母 fun ...

  9. 初学 Delphi 嵌入汇编[13] - 地址参数用 [] 取值

    为什么80%的码农都做不了架构师?>>>    //关于地址参数(var/out) function Fun(var x,y: Integer): Integer; asmmov e ...

最新文章

  1. Kafka的常见错误分析
  2. 安装指定版本的minikube
  3. 监督学习:KNN(K-近邻)算法实现手写数字识别的三种方法
  4. Android将ButtonBar放在屏幕底部
  5. codevs 1052 地鼠游戏
  6. 一个简单的javascript时钟程序
  7. 14、DNS正反向解析、主从复制、子域授权、区域转发 学习笔记
  8. [转载] python格式化字符串漏洞_从两道CTF实例看python格式化字符串漏洞
  9. 8.看板方法---建立交付节奏
  10. mybaits.xml文件约束,头部
  11. 【CA】数字电视CA原理与破解方式
  12. Elgamal数字签名原理
  13. python绘图画猫咪_使用Python的turtle画小猫咪
  14. Excel自动调整行高/行高适应文字内容
  15. 小众软件:画简洁风格的原型图
  16. hbase面试题整理
  17. 51Nod_1265 四点共面【混合积】
  18. 5G非授权频段接入关键技术及国际标准化
  19. 51单片机花样流水灯
  20. jor oracle,想问下简表连接Oracle ORC!

热门文章

  1. c语言中创建一个整数数组_VBA中动态数组的创建及利用方法
  2. docker查找镜像_5 款非常好用的开源 Docker 工具,get一波~
  3. 占用系统资源测试_高频性能测试面试题15道
  4. extends 抽象方法_关于abstract抽象类的理解
  5. java的栈图形演示
  6. strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur
  7. c语言字符串文库总结,C语言程序设计入门:字符串函数
  8. 怎样查询2021高考模拟成绩,2021年高三一模二模三模哪个成绩更接近高考成绩,看看网友是怎么评论...
  9. python3导入_Python3导入相对还是绝对的正确方法?
  10. android studio日历小程序,android studio无法加载日历界面