当前位置: 首页 > news >正文

宏汇编以及浮点程序设计实验

实验要求

  1. 利用重复宏定义实现1、2、3¼9数据的定义;
  2. 编写程序,上机验证结果的正确性

 实验分析

(1)使用重复宏伪指令对数据1、2、3、4、5、6、7、8、9进行定义。

(2)先求出L×C的结果,使用FSQRT算术运算指令对其开平方根,乘2后使用FLDPI置π指令实现π的存储,然后其与前面的结果相乘。使用FLD ONE将堆栈寄存器ST(0)置1完成数字1的存储,最后使用FDIVR实现实数反除指令完成第二部分的计算。

3)最后就是将第一部分的和值和第二部分相乘。

 程序设计

  1. 编写重复宏程序,定义了9个初值分别为1,2,3,4...9的字节单元,Table为这些字节单元的首地址,程序如下:

.data

Table EQU  THIS BYTE;宏定义 定义了9个初值分别为1,2,3,4...9的字节单元,Table为这些字节单元的首地址

COUNT = 1

REPT 9

DB COUNT

COUNT = COUNT + 1

ENDM

  1. 数据部分:

RESULT     REAL4 ?

ADDSUM  REAL4

T     DW ? ; 临时变量Temp,用于存放1+2+3...+9的值,并从整形转换成实数类型的跳板

L1    REAL4 0.000001

C1    REAL4 0.000001

TWO   REAL4 2.0

ONE   REAL4 1.0

ZERO  REAL4 0.0

_size DW 80

  1. 代码段:

.code

start:

    MOV CX, 9;设置循环次数

    FLD ZERO;给栈顶置零

    LEA ESI, Table;把DS:Table的偏移地址给ESI,用于寄存器间接寻址

sum:

    CMP CX, 0

    JE calculation ;如果CX为零则跳转到calculation段

    MOV AX, 0

    MOV AL, [ESI]

    MOV T, AX

    FILD T;FILD指令将16位 32位或者64位有符号整数源操作数转换为双精度浮点数,并加载到ST(0)。源操作数符号保留。FILD支持的内存操作数类型和MOV一致

    FADD

    ADD ESI, 1

    LOOP sum

calculation:

    FSTP ADDSUM

    FLD  L1 ; 将L1入栈

    FMUL C1 ; ST < -(C1) * (ST)

    FSQRT ; ST < -sqrt(ST)

    FMUL TWO ; ST < -(TWO) * (ST)

    FLDPI ; ST < -PI

    FMUL ;ST<-ST(1)*ST

    FLD ONE ;ST <- 1

    FDIVR ;ST <- ST/ST(1)

    FMUL

    FSTP RESULT ; RESULT <-ST

    invoke ExitProcess,NULL

end start

查看浮点计数器进行调试。

通过循环1+2+3+…+9求和,求和后的结果保存在自定义变量ADDSUM中。

图1 1+2+……+9保存在ADDSUM中

图2 L1入栈

……

最终,运算结果保存在自定义变量RESULT中,即RESULT = ST0,然后ST0弹栈。

图11 结果

如果对你有帮助的话,请给我点个赞吧❤

相关文章:

  • 练习小项目5:基础计算器
  • 算法竞赛 Java 高精度 大数 小数 模版
  • 2025年即时通讯APP如何抵御DDoS攻击?全链路防御方案与实战解析
  • 5.19本日总结
  • Axure跨页面交互:利用IFrame和JS实现父子页面菜单联动
  • 如何快速更换电脑浏览器ip:教程与注意事项
  • 煤化工数字化关键一步:Modbus TCP转Profinet网关实现全流程通信兼容
  • 基于 Vue 和 Node.js 实现图片上传功能:从前端到后端的完整实践
  • Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
  • 学习STC51单片机07(芯片为STC89C52RC)
  • arm64适配系列文章-第八章-第二节-arm64环境上seata的部署-手动构建1.4.2版本镜像
  • 使用 NGINX 的 `ngx_http_secure_link_module` 模块保护资源链接
  • APP小程序抓包和下游代理
  • HTTP 协议基础
  • JVM 垃圾回收器
  • 魔族密码--dp+map+substr
  • uniapp vue 开发微信小程序 分包梳理经验总结
  • 2024CCPC吉林省赛长春邀请赛 Java 做题记录
  • MAC常用操作整理
  • codeup添加流水线docker自动化部署
  • 印尼总统20年来首次访泰:建立战略伙伴关系,加强打击网络诈骗等合作
  • 上海发文加强直播经济技能人才培养:三年新培养持证直播技能人才5万名
  • 1至4月国家铁路发送货物12.99亿吨,同比增长3.6%
  • 浙江推动人工智能终端消费:家居机器人纳入以旧换新补贴范围
  • 外媒:哈马斯一名高级指挥官尸体被发现,系辛瓦尔弟弟
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤