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

譬如 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位寄存器, 情况肯定也是如此.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element form 自定义校验

element-ui 表单校验总结 作为一名前端开发,会遇到各种各样的表单处理。为了给用户更好的体验,行内表单校验及错误展示被广泛使用。由于工作中用到element-ui较多,所以这里简单谈一谈日常工作遇到的【有意思】的表单交互。 element-ui官网链…

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)

本文将讨论: • 缓存和 Forms 身份验证 • 视图状态和会话状态 • 配置文件属性序列化 • 线程池饱和 • 模拟和设置配置文件 本文使用了下列技术: .NET Framework、ASP.NET、Windows Server 2003 本页内容 LoadControl 和输出缓存会话和输出缓存Fo…

cocos2d-x 3.0 alpha1 生成Qt qch帮助文档

Qt的助手挺好用的. 比chm好多了 cocos2d-x使用doxygen生成文档. 默认生成的是html形式, 需要打开浏览器, 这个是比较耗资源吧 可以修改配置, 让doxygen同时输出qch形式的帮助文档 打开 \cocos2d-x-3.0alpha1\docs\doxygen.config 修改其中几项: GENERATE_QHP YESQHP_NAMESPA…

如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

.net 1.1中的解决方法(转)1建立一个DataSetHelper类(DataSetHelper.cs) publicclassDataSetHelper...{ public DataSet ds; public DataSetHelper(ref DataSet DataSet) ...{ ds DataSet; } public DataSetHelper() ...{ ds null; } p…

AngularJS中巧用ngModel的$asyncValidators属性写一个验证唯一性的Direcitve

有这样的一个需求:添加用户的时候,根据主键判断当前添加用户的email是否已经被使用。为此,我们需要把主键和email来传递给远程的一个API,让API返回结果,告之当前email是否被使用过。写一个验证email唯一性的Directive&…

ASP技巧:在Access数据库中重命名表

下面代码是用Adox重命名Access表名的示例代码: Dim Conn,ConnStr,oCat,oTbl ConnStr "ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" & Server.MapPath("data.mdb") Set oCatServer.CreateObject("ADOX.Catalog") oCat.Active…

Centos 系统安装NetCore SDK命令以及一系列操作(2)

ok,接下来安装dotnetCore的SDK,访问:https://dotnet.microsoft.com/download, 如下图,选择Linux, 选择一下这个Linux的发行版,我们选择Centos就行,然后执行这些命令去安装SDK,地址如…

这该死的高度,height,clientHeight,scrollHeight,offsetHeight

引言: 虽然有时候界面的设置不是我们这些后台代码人员的工作,但是有时候却难以理解控件生成时的一些怪事,比方在学习webabcd的扩张GridView中固定列时,你或许已经被其中的height,clientHeight,scrollHeight,offsetheight弄得晕晕的了,当然这些都是网页制作的一个基础,将其记下,…

C#高级语法基础知识总结6——字符串集合

字符串 集合 列表声明 Var intListnew List<int>();Var racersnew List<Racer>();List<int> intListnew List<int>(10);//大小为10&#xff0c;倍数增加 使用Capacity属性可以获取和设置集合的容量 使用Count属性可以获取集合的元素个数 Add()方法添加…

瓦尔都窗前的一瞥 ①

面对着围着哥本哈根的、生满了绿草的城堡&#xff0c;是一幢高大的红房子。它的窗子很多&#xff0c;窗子上种着许多凤仙花和青蒿一类的植物。房子内部是一副穷相&#xff1b;里边住的也全是一些穷苦的老人。这就是“瓦尔都养老院”。  看吧&#xff01;一位老倚着窗槛站着&a…

浏览器播放rtsp视频流方案(vlc转http方案)

一.vlc播放器转成http&#xff0c;在浏览器用video标签播放 1.下载vlc播放器 网址:https://www.videolan.org/ 2.安装并打开之后&#xff0c;点击媒体 3.点击打开网络串流&#xff0c;进入到下个页面&#xff0c;在输入框输入自己的rtsp流 4.点击播放旁边的小三角号&#xff0c…

qsort和sort的区别 转载

qsort和sort的区别 First qsort 基本快速排序的方法&#xff0c;每次把数组分成两分和中间的一个划分值&#xff0c;而对于有多个重复值的数组来说&#xff0c;基本排序的效率较低。集成在C语言库函数里面的的qsort函数&#xff0c;使用 三 路划分的方法解决这个问题。所谓三路…

浏览器播放rtsp视频流方案(ffmpeg + nginx转m3u8)

1.下载ffmpeg &#xff0c;传送门&#xff1a;https://ffmpeg.en.softonic.com/ 2.配置环境变量 右击我的电脑---->点击属性&#xff0c;打开左侧高级系统设置 点击下方的环境变量 在下方系统变量中找到path变量&#xff0c;选中点击下方编辑&#xff0c;别点成删除&#…

RIA说文解字

微软 WPF/Sliverlight Adobe AIR&#xff08;Adobe Integrated Runtime&#xff09; Java JavaFX 三种主流RIA开发平台评测报告 评测对象为Adobe Flex&#xff0c;微软的ASP.Net AJAX和Curl RIA平台。 测试发现&#xff0c;ASP.Net AJAX尤其适合B2C也即商家对消费者&#xff08…

酒桌游戏

酒桌游戏 酒桌上&#xff0c;敬酒是比较通俗的方式&#xff0c;但是敬酒就会产生 求人与被求人 的关系。同是同学。可能还是游戏的方式放松些~ 抽手游戏 大家把手伸出来&#xff0c;数1&#xff0c;2&#xff0c;3~~~ 最后一个人&#xff0c;喝酒 两人同叫&#xff0c;两人喝酒…

浏览器播放rtsp视频流方案(ffmpeg + nginx转rtmp)

之前已经更新vlc和m3u8的方案了&#xff0c;这个是最后一个方案&#xff0c;同时&#xff0c;转rtmp的方案也是我在用的 1.下载ffmpeg &#xff0c;传送门&#xff1a;https://ffmpeg.en.softonic.com/ 2.配置环境变量 右击我的电脑---->点击属性&#xff0c;打开左侧高级…

由Dvbbs PHP 0day引发的争论

由Dvbbs PHP 0day引发的争论昨天刚刚得到Dvbbs PHP 0day 的资料&#xff0c;看来还是晚了&#xff0c;今天无意间发现了有趣的事情&#xff0c;所以就给大家贴出来。呵呵漏洞给大家播报下Dvbbs PHP 0day影响版本&#xff1a;2.0漏洞文件&#xff1a;/boardrule.phpAuthor&#…

图形学中的 显示表示 和 隐式表示

简介 The two most common methods of representing curves and surfaces in geometric modeling are implicit equations and parametric functions.// 两个最基础的方法在表示曲面和形状在几何建模是隐式表示和显示表示 隐式表示 The implicit equation of a curve lying in …

uniapp+typeScript+vue3.0+vite

最近公司需要开发新版小程序&#xff0c;思考了一下&#xff0c;决定还是用最新的技术进行开发&#xff0c;同时也能锻炼到自己&#xff0c;废话不多说&#xff0c;开搞&#xff1a; 一.首先打开uniapp的官网&#xff1a;uni-app官网 //环境安装 //全局安装vue-cli npm instal…

纪中七日游——总结篇 DAY1AB

DAY 1 B 组 T1 游戏 Description Alice和Bob在玩一个游戏&#xff0c;游戏是在一个N*N的矩阵上进行的&#xff0c;每个格子上都有一个正整数。 当轮到Alice/Bob时&#xff0c;他/她可以选择最后一列或最后一行&#xff0c;并将其删除&#xff0c; 但必须保证选择的这一行或这一…