《汇编语言 基于x86处理器》第十二章浮点数部分的代码
▶ 书中第十二章的程序,主要讲了 FPU 的指令和浮点数计算的过程
● 代码,简单的 32 为浮点数测试
- INCLUDE Irvine32.inc
- INCLUDE macros.inc
- .data
- first REAL8 .
- second REAL8 .
- third REAL8 ?
- .code
- main PROC
- finit ; 初始化 FPU
- fld first
- fld second
- call ShowFPUStack ; 展示栈中的浮点数
- mWrite "Please enter a real number: " ; 输入两个浮点数相乘
- call ReadFloat
- mWrite "Please enter a real number: "
- call ReadFloat
- fmul ST(),ST() ; 乘法
- mWrite "Product: "
- call WriteFloat
- call Crlf
- call waitmsg
- exit
- main ENDP
- END main
● FPU 表达式计算 (6.0 * 2.0) + (4.5 * 3.2)
- INCLUDE Irvine32.inc
- .data
- array REAL4 ., ., ., .
- dotProduct REAL4 ?
- .code
- main PROC
- finit ; 初始化
- fld array ; push 6.0
- fmul array + ; ST(0) = 6.0 * 2.0
- call ShowFPUStack
- fld array + ; push 4.5
- fmul array + ; ST(0) = 4.5 * 3.2
- call ShowFPUStack
- fadd ; ST(0) = ST(0) + ST(1)
- call ShowFPUStack
- fstp dotProduct ; 栈中数据转入内存
- call waitmsg
- exit
- main ENDP
- END main
● FPU 比较和分支
- INCLUDE Irvine32.inc
- .data
- x real8 .
- y real8 .
- XLessThanY BYTE "x < y",
- XGreaterThanY BYTE "x >= y",
- .code
- main PROC ; 第一种方法
- finit ; 初始化
- fld x ; 分别压入 x 和 y
- fcomp y
- fnstsw ax ; 状态字放入 ax
- sahf ; AH 复制到 EFLAGS
- jnb L1 ; x >= y 则跳到 L1
- mov edx, OFFSET XLessThanY
- call writeString
- jmp L2
- L1:
- mov edx, OFFSET XGreaterThanY
- call writeString
- L2:
- call crlf
- call waitmsg
- exit
- main ENDP
- main2 PROC ; 第二种方法,使用指令 fcomi
- finit
- fld y ; 先压入 y 再压入 x
- fld x
- fcomi ST(), ST() ; 在栈中比较
- jnb L1 ; 直接使用EFLAG 作分支,不再搬运两次
- mov edx, OFFSET XLessThanY
- call writeString
- jmp L2
- L1:
- mov edx, OFFSET
- call writeString
- L2:
- call crlf
- call waitmsg
- exit
- main2 ENDP
- END main
《汇编语言 基于x86处理器》第十二章浮点数部分的代码的更多相关文章
- 《汇编语言 基于x86处理器》第六章条件处理部分的代码
▶ 书中第六章的程序,使用了条件判断和跳转来实现一些功能 ● 代码,查找数组首个非零值 INCLUDE Irvine32.inc .data intArray SWORD , , , , , , , ...
- 《汇编语言 基于x86处理器》第十三章高级语言接口部分的代码 part 2
▶ 书中第十三章的程序,主要讲了汇编语言和 C/++ 相互调用的方法 ● 代码,汇编中调用 C++ 函数 ; subr.asm INCLUDE Irvine32.inc askForInteger P ...
- 《汇编语言 基于x86处理器》第十一章 MS-DOS 编程部分的代码 part 2
▶ 书中第十一章的程序,主要讲了 Windows 接口,在小黑框中进行程序交互 ● 在屏幕指定位置输出带自定义属性的文字 INCLUDE Irvine32.inc .data outHandle HA ...
- 《汇编语言 基于x86处理器》第七章整数运算部分的代码
▶ 书中第七章的程序,使用各种位移运算,加深了对内存.寄存器中整数类型变量存储的认识 ● 代码,双字数组右移 4 位 INCLUDE Irvine32.inc COUNT = ; 右移位数 .data ...
- 《汇编语言 基于x86处理器》前五章的小程序
▶ 书中前五章的几个小程序,基本的运算操作,使用了作者的库 Irvine32 和 Irvine64(一开始以为作者网站过期了,各网站上找到的文件大小都不一样,最后发现是要搭梯子 Orz,顺利下载).注 ...
- 《汇编语言 基于x86处理器》第八章高级过程部分的代码 - 两种规范计算数组元素的和
▶ 输入 Count 个 32 位有符号整数,计算他们的和 ● 代码,使用堆栈传参 ;// Sum_main.asm,主过程 INCLUDE Irvine32.inc EXTERN PromptFor ...
- 《汇编语言 基于x86处理器》第九章字符串与数组部分的代码
▶ 书中第九章的程序,主要讲了字符串相关的输入.输出,以及冒泡排序.二分搜索 ● 代码,Irvine32 中的字符串库函数代码范例 INCLUDE Irvine32.inc .data str1 BY ...
- 《汇编语言 基于x86处理器》第十章 - 运行一个 16位实地址汇编程序
▶ 书上第 10 章,主要讲了宏,引用了一个 16 位实地址的程序,从代码开始到运行 ● 代码 ; main.asm INCLUDE Macros.inc IF IsDefined( RealMode ...
- 《汇编语言 基于x86处理器》第十章结构和宏部分的代码
▶ 书中第十章的程序,主要讲了结构与宏的使用 ● 代码,使用结构,对比是否对齐的性能差距 INCLUDE Irvine32.inc INCLUDE macros.inc structN STRUCT ...
随机推荐
- CheckFail设计很垃圾
function checkFail(node, onError, fuckIE) { var id = node.src;//检测是否死链 node.onlo ...
- 黄聪:超实用的PHPExcel[导入][导出]实现方法总结
首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...
- Ubuntu16.04 LTS软件中心闪退及修改阿里源
现象: 进入软件中心点击任意,直接退出 解决办法: 先更换软件源,我的为阿里云 1. 备份 源位置 :/etc/apt/sources.list 2. 更改 sudo vi /etc/apt/sour ...
- LeetCode——4. Median of Two Sorted Arrays
一.题目链接:https://leetcode.com/problems/median-of-two-sorted-arrays 二.题目大意: 给定两个排序过的数组,求出两个数组的中位数,要求时间复 ...
- Hadoop错误集:Could not find the main class: org.apache.hadoop.*
在搭建Hadoop机群的时候,之前遇见了很多次找不到类的错误,因为对Hadoop了解不深,所以就在网上漫无目的的找解决方案,所以这里总结下我用的方法. 解决办法一: 我之前遇到了找不到 org.apa ...
- 在linux下sh批处理文件调用java的方法
解密 java -classpath collection-impl-0.0.1.jar com.ai.toptea.collection.message.DESEncrypt 1EFE4663895 ...
- shell 发送所有内容到会话
在shell当中 工具 发送键输入到所有会话 会有新的发现
- ngx_lua_waf
Web应用防护系统Web Application Firewall,简称WAF.针对HTTP/HTTPS的安全策略专门为Web应用提供保护的产品. OpenResty是一个基于 Nginx 与 Lua ...
- C语言强化——数组
打印九九乘法表 #include<stdio.h> int main() { int num = 1; for (int i = 1;i <= 9;++i) { for (int j ...
- [UE4]蓝图的颜色
一.蓝色:调用的函数或事件 二.绿色:纯函数 三.紫色:函数定义 四.灰色:宏 五.白色:执行线 六.事件的定义 另外还有数据类型的颜色: 执行线是白色,数据线颜色跟数据量类型一致.