思路:

调用mov ah, 01h和int 21h接收键盘输入的字符,将输入的字符接收至al寄存器

注意:键盘输入的为字符的ASCII码

因此,字符1-9转化为ASCII码需要增加30h,即30h-39h

在不断接收字符的循环过程中,我们只需要判断:

1. 若输入的字符为'$',即ASCII码为24,即cmp dl, 24h范围0,则jz exit

2. 若输入的字符在0-9之间即在小于30h或大于39h的范围内,则分别jl count_up和jg count_up。其中,count_up使计数器加一并继续循环

3. 否则continue,继续循环

汇编代码如下:

;从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果
dataseg segmentbuff db 50 Dup(?)cnt dw 0mess db 'The number of the character', '13', '10', '$'character label bytemax db 2act db ?mon db 2 dup(?)dataseg endsprogram segmentassume cs:program,ds:dataseg
main proc far
start:push ds sub ax, axsub bx, bxpush bxpush axmov ax, datasegmov ds, axmov bl, 0
input:
;输入ASCII码lea dx,charactermov ah,0ahint 21hcmp act, 0je exitmov al, moncmp al, 24hjz exitcmp al, 30hjl count_upcmp al, 39hjg count_uploop inputcount_up:inc bl;输出计数器的内容call crlf;输出换行回车push dxpush axmov al, blsub al, 30hmov dl, almov ah, 02hint 21hpop axpop dxcall crlf;输出换行回车loop inputcrlf proc nearpush dxmov dl,13mov ah,02int 21hmov dl,10  mov ah,02int 21hpop dxret
crlf endpexit:mov ax, 4c00hint 21hret
program ends
main endpend start

汇编语言 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果相关推荐

  1. 【汇编程序】从键盘上输入一系列以‘$’为结束符的字符串,然后对其中的字母字符计数,并显示出计数结果

    STACKS SEGNMENT STACKDW 100H DUP(?)TOP LEABL WORDSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,SS:STACKSM ...

  2. 5.29 C语言练习(计算数字个数:从键盘输入一串字符,输出字符串里的数字字符数。)

    [练习] 题目要求:从键盘输入一串字符,输出字符串里的数字字符数. #include "stdio.h" int main() {char a[100];int i,num=0;g ...

  3. 【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

    题目: (1)有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号.姓名.3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中. 设5名学生的学号.姓名和3 ...

  4. 有五个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件stud中。

    有五个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号.姓名.3门课程成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件stud中. #include <stdio ...

  5. 【问题描述】输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并

    [问题描述]输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并 ...

  6. .输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依

    .输入一行字符串,含有数字和非数字字符以及空格等,如:df23adfd56 2343?23dgjop535如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输 ...

  7. 输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? ,302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a1[1].

    输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? ,302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中.例如,123放在a[0],456放在a1[1]- ...

  8. 题8.16:输入一个字符串, 内有数字和非数字字符, 例如:A123x456 17960 ? , 302tab5876,将其中连续的数字作为一个整数, 依次存放到一数组a中。例如, 123 放在a[0

    题目 本题是谭浩强<C程序设计课后习题>题8.16. 题目: 16. 输入一个字符串, 内有数字和非数字字符, 例如:A123x456 17960 ? , 302tab5876,将其中连续 ...

  9. 汇编语言:键盘输入1~8之间的一个属,求阶乘,十进制显示在屏幕上

    汇编语言实验三: 目的及要求: 从键盘输入1到8之间的一个数,求阶乘: 把结果在屏幕上以十进制数形式显示出来: 把整个过程和执行结果截图,写成实验报告 实验步骤: 定义堆栈段,数据段和代码段,数据段用 ...

最新文章

  1. libvirt(virsh命令介绍)
  2. 京东三级列表页持续架构优化—前端优化实践
  3. c现代方法8.2节 deal.c程序自己编写
  4. <script>放在head内和body内有什么区别
  5. php mongo 查询count,[PHP] 使用PHP在mongodb中进行count查询
  6. vb mysql 插入记录_vb实现数据库的连接,修改,删除,插入(ADO.Net)
  7. python 图片数据增强_数据增强之批量修改图像尺寸大小(附Python实现)
  8. PyTorch中“CUDA out of memory”的调试笔记
  9. java 方法的重载_Java中的方法和方法重载
  10. js双击事件条件触发_js页面触发chargeRequest事件和Nginx获取日志信息
  11. SQL Prompt 破解教程
  12. linux软链接的创建、修改、删除(硬链接hard link、软链接soft link或symbolic link、死链接dangling link)(软连接、硬连接)
  13. 【数仓】数据质量监控
  14. 【名师大讲坛】叶俊受《金刚经》的启发创造“名非论”-火锅智烩节目组根据视频文字整理
  15. 【PPT】绘制表格和多样式圆圈
  16. damon ps2 android,DamonPS2模拟器
  17. 点餐小程序【源码好优多】
  18. 黄仁勋:GPU,打折!
  19. 推荐系统入门(六):新闻推荐实践1(附代码)
  20. 主流车品牌魅力指数榜别克、东风日产、一汽丰田列前三

热门文章

  1. slack 使用说明_使用Reacji自动将Slack消息移至其他渠道
  2. 汇顶科技(笔试加面试)
  3. matlab fgetc,fgetc函数的作用是什么
  4. java string占用内存_Java中String到底占用多大的内存空间?
  5. ymlm启用root用户
  6. java安装报错循环冗余检查_SQLSERVER2012备份日志报错:”读取失败: 23(数据错误(循环冗余检查)。)”...
  7. ubuntu下安装Realtek usb无线网卡驱动(8821cu)
  8. 减少计算机视觉效果可以减少游戏卡顿吗,Win10玩游戏更流畅的几招优化方法(亲测有效)...
  9. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)
  10. 【路由篇】01. 修改密码 ❀ 1900 ❀ CISCO 路由器