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

news2025/1/4 19:17:09

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 PROC
	PUSH AX
	PUSH BX
	PUSH CX
	PUSH DX
	MOV BL,10
    MOV DX,0
L1: 
    MOV AH,1
    INT 21H
    CMP AL,'9';输入不是数字字符跳出死循环
    JA L2
    CMP AL,'0'
    JB L2
    
    SUB AL,48
    MOV AH,0
    MOV CL,AL
    MOV CH,0
    MOV AL,DL
    MUL BL			;乘法结果不能大于255,除最后一次
    				; 所以最多只能存4位且前3位不能大于255
    ADD AX,CX		;cx放输入的数
    MOV DX,AX		;dx放结果
    
    JMP L1    ;死循环
    
L2:;将AX中的数以无符号十进制形式输出显示。
    MOV AX,DX		;最大2559
    MOV CX,SP		;用于最后判断入栈的是否出完
    
L3: 	;循环压栈(所有)
    DIV BL		;不能是DIV BX显示DIV ERROR
    PUSH AX		;PUSH AH错误
    MOV AH,0	;余数清0
    
    CMP AL,0;商大于0继续循环
    JA L3
    
       
 L4:   ;循环输出
    POP DX
    MOV DL,DH
    ADD DL,48
    MOV AH,2
    INT 21H
    
    CMP SP,CX;栈空停止
    JNE L4
    	
    POP DX
    POP CX
    POP BX
    POP 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,1
    INT 21H
    SUB AL,48
    MOV AH,0
    MOV CX,AX
    
L1:        ;计算阶乘结果在AX CX放需要乘的每一个数
	CMP CX,1;先判断防止输入1
	JBE L2	
    SUB CX,1
    MUL CX	;6!乘到2时大于255 不能只用8位寄存器  
    JMP L1  
    

 L2: 	;循环压栈(所有)
    DIV BL
    PUSH AX
    MOV AH,0   
    CMP AL,0;商大于0继续循环
    JA L2   
    
 L3:   ;循环输出
    POP DX
    MOV DL,DH
    ADD DL,48
    MOV AH,2
    INT 21H    
    CMP SP,0;栈空停止
    JNE L3
    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang学习历程【第五篇 复合数据类型:数组切片】

Golang学习历程【第五篇 复合数据类型:数组&切片】 1. 数组(Array)1.1 数组的定义1.2 初始化数组1.3 数据的循环遍历1.4 多维数组 2. 切片(Slice)2.1 切片声明、初始化2.2 基于数组创建切片2.2 切片的长度(len)和容…

PDF预览插件

PDF预览插件 可用于当前页面弹窗形式查看,可增加一些自定义功能 pdf预览插件 代码块: pdfobject.js <div class="pdfwrap"><div class="item"><h3>笑场</h3><div class="tags"><p>李诞</p><i&…

Chrome 浏览器下载安装教程,保姆级教程

大家好&#xff0c;今天我们来聊一聊如何在国内下载和安装最新版本的 Chrome 浏览器。由于众所周知的原因&#xff0c;Google 的网站在国内是被屏蔽的&#xff0c;因此很多朋友在下载 Chrome 浏览器 时会遇到困难。其实&#xff0c;不必担心&#xff0c;今天我将为大家带来一份…

Java开发 PDF文件生成方案

业务需求背景 业务端需要能够将考试答卷内容按指定格式呈现并导出为pdf格式进行存档&#xff0c;作为紧急需求插入。导出内容存在样式复杂性&#xff0c;包括特定的字体&#xff08;中文&#xff09;、字号、颜色&#xff0c;页面得有页眉、页码&#xff0c;数据需要进行表格聚…

CSS进阶和SASS

目录 一、CSS进阶 1.1、CSS变量 1.2、CSS属性值的计算过程 1.3、做杯咖啡 1.4、下划线动画 1.5、CSS中的混合模式(Blending) 二、SASS 2.1、Sass的颜色函数 2.2、Sass的扩展(extend)和占位符(%)、混合(Mixin) 2.3、Sass的数学函数 2.4、Sass的模块化开发 2.5、Sass…

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习

2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…

纵览!报表控件 Stimulsoft Reports、Dashboards 和 Forms 2025.1 新版本发布!

Stimulsoft 2025.1 新版发布&#xff0c;旨在增强您创建报告、仪表板和 PDF 表单的体验&#xff01;此最新版本为您带来了许多改进和新功能&#xff0c;使数据处理更加高效和用户友好。亮点包括对 .NET 9 的支持、Microsoft Analysis Services 的新数据适配器、发布向导中适用于…

Javascript-web API-day04

文章目录 01-实例化日期对象02-常见的日期对象方法03-年月日案例04-年月日简化05-得到时间戳06-倒计时07-关闭节点08-子节点09-增加节点10-克隆节点11-删除节点12-m端时间13-(swiper插件的使用)移动端轮播图游乐园项目 学成在线重构 01-实例化日期对象 <!DOCTYPE html> …

Formality:匹配(match)是如何进行的?

相关阅读Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 匹配点、对比点和逻辑锥 匹配指的是Formality工具尝试将参考设计中的每个匹配点与实现设计中的相应匹配点进行配对&#xff0c;这里的匹配点包括对比点(Compare Point…

浅谈电力监控系统在厂房电力工程中的设计与应用

安科瑞汪洋/汪小姐/汪女士---Acrelwy 摘要 &#xff1a;电力监控系统在厂房电力工程中的应用&#xff0c;稳步提升了电力系统管理的智能化、信息化水平&#xff0c;确保电力资源的合理化应用&#xff0c;满足工业生产的基本需求。为确保电力监控系统与厂房电力工程的有效结合&…

AIGC生图实战技巧分享

目录 引言 &#x1f343;安装与配置代码 &#x1f343;数据处理代码 &#x1f343;生图请求代码 引言 本文展示了 AIGC 生图相关的代码示例&#xff0c;包括安装与配置、数据处理以及生图请求等不同阶段的代码&#xff0c;清晰呈现了整个技术实现过程中代码层面的操作要点和…

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

akamai3.0反爬教程逆向分析9个视频汇总

目录 一、akamai2.0文章二、akamai3.0每月疑似改版点二、9个视频汇总如下 一、akamai2.0文章 文章1cookie反爬之akamai_2.0-上文章2cookie反爬之akamai_2.0-上文章3cookie反爬之akamai_2.0-上文章中akamai2.0对应调试html与js文件 二、akamai3.0每月疑似改版点 详细文字与2.…

解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错

由于我们是app登陆的&#xff0c;不能直接修改网站的链接&#xff0c;将 URL 的域名部分从 auth.openai.com 变更为 auth0.openai.com&#xff0c;然后加载新的地址&#xff0c;这时候应该就可以正常登录或注册了。 所以我们使用邮箱先载入auth0的地址&#xff0c;再更改自己的…

基于Springboot + vue实现的高校办公室行政事务管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中&#xff0c;控制材质的参数值和向量值

DeepSeek-VL2

《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》是 DeepSeek-AI 团队发布的关于视觉语言模型 DeepSeek-VL2 的论文&#xff0c;以下是对该论文的详细介绍&#xff1a; 研究背景与动机 多模态理解的重要性&#xff1a;在当…

【第二部分--Python之基础】03 容器类型的数据

Python内置的数据类型如序列&#xff08;列表、元组等&#xff09;、集合和字典等可以容纳多项数据&#xff0c;我们称它们为容器类型的数据。 序列 序列&#xff08;sequence&#xff09;是一种可迭代的、元素有序的容器类型的数据。 序列包括列表&#xff08;list&#xff…

大型概念模型:在句子表示空间中的语言建模

《Large Concept Models: Language Modeling in a Sentence Representation Space》这篇论文介绍了一种新的语言模型方法&#xff0c;它在句子表示空间中进行建模。该方法旨在改进传统语言模型的局限性&#xff0c;通过捕捉更高级别的语义信息来提高自然语言处理任务的表现。 模…

日期时间选择(设置禁用状态)

目录 1.element文档需要 2.禁用所有过去的时间 3.设置指定日期的禁用时间 <template><div class"block"><span class"demonstration">起始日期时刻为 12:00:00</span><el-date-pickerv-model"value1"type"dat…