《汇编语言 基于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 ...
随机推荐
- php .htaccess文件使用详解
1..htaccess文件使用前提 .htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的 ...
- NSIS 制作简单安装包
;replace NSIS/Contrib/zip2exe/Modern.nsh;NSI format: Asni;http://nsis.sourceforge.net/ ;UAC级别Request ...
- 基于vue.js实现远程请求json的select控件
基本思路 前端把需要的参数类型编码传到后台,后台返回相应的参数列表json,前端利用vue渲染select控件 具体实现 前端代码 <select v-model="template. ...
- VBA Dumper v0.1.4.2, 提取office文档中的VBA代码,监查宏病毒恢复代码(演示版
http://club.excelhome.net/thread-970051-1-1.html VBA Dumper 0.1.4.2更新,填补国内同类程序空白 此程序为演示版,可以在无office的 ...
- Qt 使用QMovie加载gif图片实现动态等待窗口
import sys from PyQt4 import QtGui, QtCore from PyQt4.QtGui import QLabel app = QtGui.QApplication(s ...
- Socket调用Close后如何终止套接口的问题
setsockopt 设置 SO_LINGER 选项 此选项指定函数close对面向连接的协议如何操作(如TCP).内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数 ...
- 廖雪峰Java3异常处理-2断言和日志-4使用Log4j
1.Log4j Log4j是目前最流行的日志框架.有两个版本 1.x:Log4j 2.x:Log4j2 Log4j下载地址https://www.apache.org/dyn/closer.lua/l ...
- androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法
点击File-->setting-->Appearance将里面的Override default fonts by(not recommended)打钩去掉. 这个是目前找到唯一办法.
- 13-001 ViewComponents IViewComponentActivator
接口定义: /// <summary> /// Provides methods to activate an instantiated ViewComponent /// </su ...
- tf.assign,tf.assign_add,tf.assign_sub
a = tf.Variable(0.0,dtype=tf.float32) with tf.Session() as sess: sess.run(tf.global_variables_initia ...