汇编语言:从键盘输入数字字符,(计算阶乘),以无符号十进制形式输出(分支、循环程序)

1.分支结构原理

分支结构是汇编语言中的一种基本控制结构,它允许程序根据条件选择执行不同的路径。分支结构通常通过跳转(jump)指令来实现。

条件判断:

汇编语言中的条件判断通常通过比较(compare)指令来实现。比较指令将两个操作数进行比较,并根据比较结果设置状态标志(如零标志ZF、符号标志SF等)。

状态标志随后被用于控制跳转指令的行为。

跳转指令

跳转指令根据当前的状态标志来决定是否跳转以及跳转到哪里。

常见的跳转指令包括无条件跳转(如JMP)和条件跳转(如JE、JNE、JG、JL等)。

条件跳转指令根据特定的条件(如相等、不相等、大于、小于等)来决定是否执行跳转。

2.循环结构原理

循环结构是汇编语言中另一种基本控制结构,它允许程序重复执行一段代码直到满足某个条件为止。循环结构通常通过循环指令和跳转指令来实现。

循环初始化

在循环开始之前,需要初始化循环计数器(通常是一个寄存器)和循环条件。

循环体

循环体是包含要重复执行的指令的代码块。

循环更新

在每次循环迭代结束时,需要更新循环计数器。

循环条件判断

在每次循环迭代开始时,需要判断循环条件是否满足。如果满足,则继续执行循环体;如果不满足,则退出循环。

循环指令

汇编语言中可以使用LOOP指令来实现简单的循环结构。LOOP指令会自动递减循环计数器,并在计数器不为零时跳回到循环体的开始。

也可以使用其他跳转指令(如JMP)和条件判断指令来实现更复杂的循环结构。

1、编写程序,编写程序,从键盘输入数字字符(如‘1’‘2’‘6’‘a’),在程序中得到对应的数值(126),在以无符号十进制形式输出,将得到的数值输出显示。

注:乘法用的8位的BL,所以输入的数字字符最多有4位,并且前三位不能大于255

INPUTDISPLAY PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV BL,10MOV DX,0
L1: MOV AH,1INT 21HCMP AL,'9';输入不是数字字符跳出死循环JA L2CMP AL,'0'JB L2SUB AL,48MOV AH,0MOV CL,ALMOV CH,0MOV AL,DLMUL BL			;乘法结果不能大于255,除最后一次; 所以最多只能存4位且前3位不能大于255ADD AX,CX		;cx放输入的数MOV DX,AX		;dx放结果JMP L1    ;死循环L2:;将AX中的数以无符号十进制形式输出显示。MOV AX,DX		;最大2559MOV CX,SP		;用于最后判断入栈的是否出完L3: 	;循环压栈(所有)DIV BL		;不能是DIV BX显示DIV ERRORPUSH AX		;PUSH AH错误MOV AH,0	;余数清0CMP AL,0;商大于0继续循环JA L3L4:   ;循环输出POP DXMOV DL,DHADD DL,48MOV AH,2INT 21HCMP SP,CX;栈空停止JNE L4POP DXPOP CXPOP BXPOP AX 	
INPUTDISPLAY ENDP

2、从键盘输入1个数字字符(例如‘5’),在程序中得到对应的数值的阶乘(5!),然后在利用1中的输出功能,将得到的数值输出显示。

注:1、同样由于寄存器有限位数,只能计算1-6的阶乘

       2、由于最后输出判断用到sp与0的比较,所以用于函数需要变一下

    MOV BL,10;用于除法MOV DX,0;用于显示MOV CX,0;用于计算阶乘MOV AH,1INT 21HSUB AL,48MOV AH,0MOV CX,AXL1:        ;计算阶乘结果在AX CX放需要乘的每一个数CMP CX,1;先判断防止输入1JBE L2	SUB CX,1MUL CX	;6!乘到2时大于255 不能只用8位寄存器  JMP L1  L2: 	;循环压栈(所有)DIV BLPUSH AXMOV AH,0   CMP AL,0;商大于0继续循环JA L2   L3:   ;循环输出POP DXMOV DL,DHADD DL,48MOV AH,2INT 21H    CMP SP,0;栈空停止JNE L3

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

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

相关文章

大语言模型提示技巧(二)-给模型时间思考

在与大语言模型交互的时候,如果模型给出了错误的结论,不要着急否定大模型的能力,我们应当尝试重新构建查询,请求模型在提供它的最终答案之前进行一系列相关的推理。也就是说,如果给模型一个在短时间或用少量文字无法完…

深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(一)

sql语句分为两大类:查询(select)、增删改----修改(update) select语句的执行流程 执行sql语句的流程:连接数据库、缓存查询、解析器、优化器、执行器、存储引擎操作数据 客户端:图形界面工具…

【AimRT】现代机器人通信中间件 AimRT

目录 一、什么是AimRT二、AimRT与ROS22.1 定位与设计2.2 组成与通信方式对比 三、AimRT基本概念3.1 Node、Pkg 和 Module3.2 Protocol、Channel、Rpc 和 Filter3.3 App模式 和 Pkg模式3.4 Executor3.5 Plugin 一、什么是AimRT AimRT 是智元机器人公司自主研发的一款机器人通信…

SSM-Spring-AOP

目录 1 AOP实现步骤(以前打印当前系统的时间为例) 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …

idea( 2022.3.2)打包报错总结

一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …

攻防靶场(29):目录权限和文件权限 ICMP

目录 1. 侦查 1.1 收集目标网络信息:IP地址 1.2 主动扫描:扫描IP地址段 1.3 搜索目标网站 2. 初始访问 2.1 利用面向公众的应用 3. 权限提升 3.1 有效账户:本地账户 3.2 滥用特权控制机制:Sudo和Sudo缓存 靶场下载地址&#xff1a…

C++ 面向对象编程:多态、虚函数原理

多态的通用描述便是,使用父类指针调用函数,可以根据对象类型来调用对应类型函数,我们分几个步骤来理解,先看下类的占用空间,然后拓展到虚函数对应数组,最后理解多态的原理。 我们先来看下在多态中没有任何…

王老吉药业SRM系统上线 携手隆道共启战略合作新篇章

12月27日,广州王老吉药业股份有限公司(简称“王老吉药业”)SRM项目上线启动会,在王老吉科普教育基地——“吉园”隆重举行。广药集团纪委主任陈耕、王老吉药业总工程师黄晓丹、隆道公司总裁吴树贵、项目经理赵耀、供应商代表郭伟及…

JavaScript基础 -- 变量、作用域与内存

1 原始值与引用值 原始值就是最简单的数据,引用值则是由多个值构成的对象。在把一个值赋给变量时,JavaScript引擎必须要确定这个值是原始值还是引用值 原始值大小固定,保存在栈内存上;引用值是对象,存储在堆内存上 它…

SQL—替换字符串—replace函数用法详解

SQL—替换字符串—replace函数用法详解 REPLACE() 函数——查找一个字符串中的指定子串,并将其替换为另一个子串。 REPLACE(str, old_substring, new_substring)str:要进行替换操作的原始字符串。old_substring:要被替换的子串。new_substri…

[极客大挑战 2019]Http 1

进入环境: 检查源码发现有一个链接,但是这里没有绑定,需要手动跳转,打开后,发现提示: 这里就是需要我们从https://Sycsecret.buuoj.cn来访问它 因此我们抓包,使用referer:服务器伪造…

吾杯网络安全技能大赛——Misc方向WP

吾杯网络安全技能大赛——Misc方向WP Sign 题目介绍: 浅浅签个到吧 解题过程: 57754375707B64663335376434372D333163622D343261382D616130632D3634333036333464646634617D 直接使用赛博橱子秒了 flag为 WuCup{df357d47-31cb-42a8-aa0c-6430634ddf4a} 原神启动…

如何查看下载到本地的大模型的具体大小?占了多少存储空间:Llama-3.1-8B下载到本地大概15GB

这里介绍一下tree命令,可以方便的查看文件目录结构和文件大小。 命令行tree的具体使用,请参考笔者的另一篇博客:深入了解 Linux tree 命令及其常用选项:Linux如何显示目录结构和文件大小,一言以蔽之,sudo a…

【Java回顾】Day2 正则表达式----异常处理

参考资料:菜鸟教程 https://www.runoob.com/java/java-exceptions.html 正则表达式 有一部分没看完 介绍 字符串的模式搜索、编辑或处理文本java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。 捕获组 把多个字符…

招银网路Java后端一面,难度有点大!

这是一位武汉理工大学同学的招银网络一面面经,同样附带超详细的参考答案。大家可以用来查漏补缺,针对性地补短板。 招银网络一面还是比较简单的,基本都是一些比较重要且高频的常规八股,项目问的不多。到了二面的时候, 会开始主要考察你的项目。 1、自我介绍 自我介绍一般…

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang

arcgis模版空库怎么用(一)

这里以某个项目的数据为例&#xff1a; 可以看到&#xff0c;属性表中全部只有列标题&#xff0c;无数据内容 可能有些人会认为空库是用来往里面加入信息的&#xff0c;其实不是&#xff0c;正确的用法如下&#xff1a; 一、下图是我演示用的数据&#xff0c;我们可以看到其中…

GJB系统设计说明模板

GJB系统设计说明模板及详解 1 范围 1.1 标识 1.2 系统概述 1.3 文档概述 2 引用文档 GJB XXX XXX XXX&#xff1b; XXX XXX。 前2章通用不再赘述 3 系统级设计决策 系统设计决策的目的:对系统规格说明中的关键需求(包括功能、质量属性和设计约束)进行分析,得到系统级概念性架构…

某小程序sign签名参数逆向分析

文章目录 1. 写在前面2. 接口分析3. 分析还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;年份、省份、地方财政一般预算支出 4、范围&#xff1a;31省 指标解释&#xff1a;地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…