NO TIME, BUT COURAGE, BUT BEAUTY(汇编小程序)

2023-10-24 04:40

本文主要是介绍NO TIME, BUT COURAGE, BUT BEAUTY(汇编小程序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

程序题目:

编写一个程序。 先从键盘输入一个字符串(有英文字母,可能也有数字),然后显示其中数字符的个数、英文字母的个数和字符串的长度;字符串中不能有空格,若有将其删除,并将改变后的字符串按相反的顺序显示出来;输入第二个字符串,显示的时全都以‘*’显示,然后将输入的字符串与前面处理后的字符串比较是否相同,若相同,输出“Password Right!”,否则输出 “Password Error!”。
样例:

题目分析:这个题目比较直白,有几个要注意的地方

1)个人在处理输入原始的密码并计算其中的字母和数字的长度时,所用的方法是单个字符输入(调用中断),每次输入都检查是否是回车,是否是空格,是否是数字或是字母;
2)在输出长度时,如果长度小于10,可以直接将二进制表示与‘0’相加再用字符的形式输出,但是当长度大于10就行不通了,要把十位和个位分离出来;所用的方法是将长度去除以10,这样div会直接把个位和十位分开;

代码:

DATAS SEGMENTMSG  DB      "Please input a string:",  '$'MSG1 DB      "The number of alphabet:", '$'MSG2 DB      "The number of digit:", '$'MSG3 DB      "The length of string: ",'$'MSG4 DB      "The opposite direction string: " ,'$'MSG5 DB      "Please input password:",'$'MSG6 DB      "The result:", '$'MSG7 DB      "Password Right",'$'MSG8 DB      "Password Error", '$'DIG_NUM DB    0  ;数字长度ALP_NUM DB    0   ;字母长度BLANK_NUM DB  0   ;空格个数FLAG DB       '*', '$'PASSWORD DB 30 DUP ('$')  ;密码内容与长度PASSWORD_LEN DB 0TEST_PASS DB 30 DUP ('$') ;输入的测试密码内容与长度TEST_PASS_LEN DB 0CRLF DB 0DH, 0AH, '$' ;回车,换行 结束
DATAS ENDSSTACKS SEGMENTDB 8 DUP (0)DB 8 DUP (0)
STACKS ENDSCODES SEGMENTASSUME CS:CODES, DS:DATAS, SS:STACKS
START: ;PROC FAR ;主函数 MOV AX, DATASMOV DS, AXMOV AX, STACKSMOV SS,AX;MOV AX, CODES  ;怎么回事;MOV CS,AXLEA DX, MSGMOV AH, 9INT 21H;输入并处理密码,处理指去空格并同时计算各种长度LEA DI, PASSWORDCALL SET_AND_DEAL_POSSWORDLEA DX, CRLFMOV AH, 9INT 21H;输出各种长度LEA DX, MSG1MOV AH, 9INT 21HMOV AL, ALP_NUMMOV AH, 0CALL OUTPUT_LENLEA DX, CRLFMOV AH, 9INT 21HLEA DX, MSG2MOV AH, 9INT 21HMOV AL, DIG_NUMMOV AH, 0CALL OUTPUT_LENLEA DX, CRLFMOV AH, 9INT 21HLEA DX, MSG3MOV AH ,9INT 21HMOV AL, PASSWORD_LENADD AL, BLANK_NUMMOV AH, 0CALL OUTPUT_LENLEA DX, CRLFMOV AH, 9INT 21H;输出真正的字符串,有空格就反序输出LEA DX, MSG4MOV AH, 9INT 21H;LEA DX, PASSWORD;MOV AH, 9;INT 21HLEA SI, PASSWORDCALL OUTPUT_PASSWORDLEA DX, CRLFMOV AH, 9INT 21H;输入密码LEA DX, MSG5MOV AH, 9INT 21HLEA DI, TEST_PASSCALL INPUT_PASSWORDLEA DX, CRLFMOV AH, 9INT 21H;测试密码;输入参数LEA SI, TEST_PASSLEA DI, PASSWORDMOV AL, [PASSWORD_LEN]MOV AH, [TEST_PASS_LEN]CALL IS_RIGHTLEA DX,CRLFMOV AH,9INT 21HMOV AH,4CHINT 21H;******************* SET_AND_DEAL_POSSWORD ***************
SET_AND_DEAL_POSSWORD PROC NEARSO:MOV AH, 1INT 21HCMP AL, 0DH ;输入回车结束JNZ NOT_ENDMOV AH, '$'MOV [DI], AH ;输入字符串结束符RETNOT_END:CMP AL, ' 'JZ BLANK_CASEMOV [DI], AL ;把数据装入密码中INC DICMP AL, 'A'; 'A' = 65, 'a' = 97, '9' = 57JB  DIGIT_CASE ; 数字的情况JMP ALPHABEG_CASE ;字母的情况BLANK_CASE:INC BLANK_NUMJMP SODIGIT_CASE:INC DIG_NUMINC PASSWORD_LENJMP SOALPHABEG_CASE:INC ALP_NUMINC PASSWORD_LENJMP SOSET_AND_DEAL_POSSWORD ENDP;*************** OUTPUT_LEN ************
OUTPUT_LEN PROC NEARMOV BL, 10DIV BLMOV BH, AH ;保存余数MOV DL, ALCMP DL, 0JZ OL_S1  ;如果十位为0不输出ADD DL, '0'MOV AH, 2INT 21HOL_S1:MOV DL, BH ;得到个位ADD DL, '0'MOV AH, 2INT 21HRETOUTPUT_LEN ENDP
;**************************
OUTPUT_PASSWORD PROC NEARCMP BLANK_NUM, 0JNZ OP_S1 ;反序;ELSEMOV DX, SIMOV AH, 9INT 21HRETOP_S1:MOV DL, PASSWORD_LENMOV DH, 0ADD SI, DX ;从后面开始DEC SI;按字符输出MOV CL, PASSWORD_LENMOV CH, 0OP_S2:MOV DL, [SI]MOV AH, 2INT 21HDEC SILOOP OP_S2RET
OUTPUT_PASSWORD ENDP;********************** INPUT_PASSWORD **************
INPUT_PASSWORD PROC NEARS2:MOV AH, 8INT 21HCMP AL, 0DH ; 判断是不是输入换行符JNZ IP_S3MOV AH, '$'MOV [DI], AHRETIP_S3:MOV [DI], AL;[si]是当前地址,相当于c语言中的*pt = value; INC DIINC [TEST_PASS_LEN]MOV DL, '*'MOV AH, 2INT 21HJMP S2INPUT_PASSWORD ENDP;*************************
IS_RIGHT PROC NEARCMP AL, AHJZ S3LEA DX, MSG8 ;长度不相等MOV AH, 9INT 21HRETS3:MOV CL, PASSWORD_LENMOV CH, 0S4: MOV AL, [SI]MOV AH, [DI]INC SIINC DICMP AL, AHJNZ S5LOOP S4;rightLEA DX, MSG7MOV AH,9INT 21HRETS5:;errorLEA DX, MSG8MOV AH,9INT 21HRETIS_RIGHT ENDP
;********
CODES ENDS
END START
NO TIME, BUT COURAGE, BUT BEAUTY

 经验总结:

1)写代码,可读性,可重用性,简洁性要保证, BUT BEAUTY;

2)对于自己的代码,如果自己都不能清晰地表达出思路,那就该反省反省,并采取行动,NOT TIME, BUT COURAGE.

转载于:https://www.cnblogs.com/kinthon/p/4497186.html

这篇关于NO TIME, BUT COURAGE, BUT BEAUTY(汇编小程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272770

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati