热门标签 | 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下的功能菜单的实现。代码结果:



推荐阅读
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 现在要针对我们需求引入检测模型,只检测人物,然后是图像能侧立,这样人物在里面占比更多,也更清晰,也不需要检测人占比小的情况,如下是针对这个需求,用的yolov3-tiny模型训练后 ... [详细]
  •   Python入门必读的if语句嵌套方法
    这篇文章主要介绍了Python入门必读的if语句嵌套,基于前面章节介绍的 3 种形式的条件语句,即 if、if else 和 if elif else展开 Python if 语句 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 本文介绍了 Python 的 Pmagick 库中用于图像处理的木炭滤镜方法,探讨其功能和用法,并通过实例演示如何应用该方法。 ... [详细]
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • x86x64体系探索及编程(对x86处理器介绍得最详尽又最具实践指导意义的一本书)邓志著ISBN978-7-121-18176-42012年10月出版定价:119.00元16开840页对x86处理 ... [详细]
  • 本文小编为大家详细介绍“Java中的逻辑结构模式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的逻辑结构模式有哪些”文章能帮 ... [详细]
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社区 版权所有