热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

汇编学习---分支结构程序设计

题目要求:编写汇编程序实现从键盘输入一个数字,然后判断其奇偶性;如果为奇数,则在屏幕输出1,否则输出0.题目分析:此题为典型的分支结构程序,主要要解决以下几个难点:接受用户的输入(调用DOS

    题目要求:

编写汇编程序实现从键盘输入一个数字,然后判断其奇偶性;如果为奇数,则在屏幕输出1,否则输出0.

题目分析:

此题为典型的分支结构程序,主要要解决以下几个难点:

  1. 接受用户的输入  (调用DOS中断的01H号功能实现)
  2. 奇偶数的判断      (利用RCR循环右移一位得到输入数值的最低位,判断是0还是1)
  3. 根据奇偶数条件的跳转
  4. 条件输出     (调用DOS中断的02H号功能实现
代码实现:
code segment
assume cs:code
start:
mov ah,01h;调用DOS中断的01号功能,输入字符,存储于al中
int 21h
cmp al,'0';输入字符存在al寄存器中,使其与0比较
jb start;如果其asc码比'0'小,则继续输入
cmp al,'9';与9比较
ja start;如果比输入的asc码比'9'还大,则继续输入
clc;CF标志清零
rcr al,1;将al的低1位右移出道cf中
jnc EVE;如果cf!=1,则判断此数为偶数,则跳转到偶数的操作
mov al, 31h;如果没有跳转,则为奇数,则输出字符为1,及其asc码为31H
jmp DISP;强制跳转到输出分支
EVE:
mov al,30h;0的asc码为30H
DISP:
mov ah,02h;调用DOS中断的02H功能,实现输出字符
mov dl,al;输入字符即为al,将其赋值给dl寄存器,输出
int 21h
mov ax,4c00h
int 21h
code ends
end start

代码不足:字符输入输出显示格式比较丑陋,且不友好,可以考虑添加回车加换行等。
————————————————————————————————
题目要求:利用汇编代码实现一个dos功能菜单题目分析:主要难点在于字符串输出,字符的输入;解决办法,可以调用dos中断的09H功能输出字符串,01H号功能输入字符。代码实现:data segment
     MENU  db 'Action: ',0dh,0ah;提示信息准备
        db 'This is a washing machine!',0dh,0ah         db 'You can use the MENU to choose function!',0dh,0ah         db '----------------------------------------',0dh,0ah         db '1.open the cap of washing machine ! ',0dh,0ah         db '2.close the cap !',0dh,0ah         db '3.set washing time !' ,0dh,0ah         db '4.start the washing machine !',0dh,0ah        db '5.stop the washing machine !',0dh,0ah
        db '6.quit !',0dh,0ah        db '----------------------------------------',0dh,0ah,'$'
     INPUT  db 'input your choose: $'
F1   db 0dh,0ah,'cap opened, clothes puted in !',0dh,0ah,'$' F2   db 0dh,0ah,'cap closed !',0dh,0ah,'$' F3   db 0dh,0ah,'set washing time to 5 min!',0dh,0ah,'$' F4   db 0dh,0ah,'washing machine has started',0dh,0ah,'$' F5   db 0dh,0ah,'succeed in washing the clothes !',0dh,0ah,'$' F6   db 0dh,0ah,'quitd! thanks to using this washing machine !',0dh,0ah,'$' F7   db 0dh,0ah,'no this choose ,please reinput your choose !',0dh,0ah,'$'
data ends


code segment
assume cs:code,ds:data
start:
mov ax,data mov ds,ax
 
mov ah,09h;调用09H号功能输出MENU信息。 mov dx,offset MENU int 21h
 INP:
          mov dx,offset INPUT ;调用09H号功能输出提示信息INPUT
int 21h mov ah,01h;调用01H号功能输入用户的选择 int 21h
 
cmp al,'1';根据用户的输入,实现对应的输出 jz W1 cmp al,'2' jz W2 cmp al,'3' jz W3 cmp al,'4' jz W4 cmp al,'5' jz W5 cmp al,'6' jz W6 jmp W7
  W1:
mov ah,09h mov dx,offset F1 int 21h jmp INP
  W2:
mov ah,09h mov dx,offset F2 int 21h jmp INP
  W3:
mov ah,09h mov dx,offset F3 int 21h jmp INP
  W4:
mov ah,09h mov dx,offset F4 int 21h jmp INP
  W5:
mov ah,09h mov dx,offset F5 int 21h jmp INP
  W6:
mov ah,09h mov dx,offset F6 int 21h jmp STOP
  W7:
         mov ah,09h
mov dx,offset F7 int 21h jmp INP
STOP:  
mov ax,4c00h int 21h
code ends
         end start


代码说明:本代码是通过模拟一个洗衣机的使用来实现模拟一个DOS下的功能菜单的实现。代码结果:



推荐阅读
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • EdgeYOLO学习笔记
    EdgeYOLO学习笔记EdgeYOLO ... [详细]
author-avatar
MrBatista
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有