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

由题构造 嵌入汇编(汇编)

小明是一个渔夫,坚持“三天打鱼,两天晒网”。已知今年有365天,1月1日小明去打3天鱼,1月4号开 始晒2天网。

编写程序让用户输入今年的第几天,输出当天小明是打鱼还是晒网,打鱼输出“F”,筛网输出“D”, 如果输入的天数不正确则输出“E”。例如输入5,程序输出“D”;输入6,程序输出“F”;输入366输出“E”。

设有如下C程序框架,请采用嵌入汇编形式编写所需的程序片段,其中判断打鱼还是筛网的部分需采用子程 序形式实现。请在必要的位置进行注释。

#include <stdio.h>int main() 
{ unsigned int n = 0; char result[2] = " ";  // 用于保存输出结果,预留足够空间printf("请输入第几天(1~365):\n"); scanf("%d", &n); // 嵌入汇编主逻辑_asm {mov eax, n              ; 将输入的天数存入eaxcmp eax, 1              ; 检查是否小于1jl invalid_day          ; 如果小于1,跳转至无效处理cmp eax, 365            ; 检查是否大于365jg invalid_day          ; 如果大于365,跳转至无效处理; 有效天数,调用判断子程序call judge_fish_or_dryjmp output_result       ; 跳转到结果invalid_day:; 无效天数,设置结果为'E'mov byte ptr [result], 'E'jmp exit_asm            ; 退出汇编块output_result:; 将子程序返回的结果存入resultmov byte ptr [result], alexit_asm:; 汇编块结束} printf("结果:%s\n", result); return 0; 
}// 判断打鱼还是晒网的子程序,使用嵌入汇编实现
_asm {
judge_fish_or_dry:; 功能:判断给定天数是打鱼还是还是晒网; 输入:eax = 天数(n); 输出:al = 'F'(打鱼)或'D'(晒网); 计算(n-1) % 5,因为周期是5天(3天打鱼+2天晒网)dec eax             ; eax = n-1,将天数转为0基索引; 计算模5运算mov ecx, 5xor edx, edx        ; 清空edx,准备除法div ecx             ; edx = (n-1) % 5,eax = 商(无用); 判断余数范围cmp edx, 2          ; 余数0,1,2对应打鱼(3天)jle is_fishing      ; 如果小于等于2,跳转至打鱼处理jmp is_drying       ; 否则为晒网(余数3,4对应2天)is_fishing:mov al, 'F'         ; 设置结果为打鱼jmp return_funcis_drying:mov al, 'D'         ; 设置结果为晒网return_func:ret                 ; 返回主程序
}


http://www.xdnf.cn/news/19399.html

相关文章:

  • python调用豆包大模型给人脸生成卡通图像
  • 八大排序--快速排序
  • 福彩双色球第2025100期数据统计
  • hardhat 3 测试框架选择
  • linux系统学习(14.日志管理)
  • 华秋DFM检查PCB设计缺陷、一键导出Gerber、BOM、坐标文件
  • 第八章 光照
  • Qt QNetworkAccessManager 简述及例程
  • C++11——万能模板及完美转发
  • GMTapSDK 扩展使用文档
  • 【开题答辩全过程】以 基于springboot的垃圾分类管理系统为例,包含答辩的问题和答案
  • LSTM原理理解
  • 8.29学习总结
  • 大语言模型(LLM)简介与应用分享
  • Linux-数据库
  • 旅游景点库系统的设计与实现(代码+数据库+LW)
  • 力扣hot100:轮转数组(常规思路与三步反转讲解)(189)
  • mmaction安装的详细说明帖
  • 王立群《读史记-刘邦》读书笔记
  • 嵌入式C学习笔记之编码规范
  • 数学分析原理答案——第七章 习题12
  • AI大模型实战解析-RAG知识库+LangChain项目实战
  • Linux系统的进程管理
  • Unity3D Gizmos 调试可视化
  • Qt中UDP回显服务器和客户端
  • 第二十七天-ADC模数转换实验
  • python反转字符串
  • 三维重建模型、3DGS、nerf、 mip-nerf
  • 《WINDOWS 环境下32位汇编语言程序设计》第9章 通用控件(2)
  • 点接触混合润滑完整数值解