汇编语言程序设计之二
从键盘输入一系列字符(以回车结束),按数字,大小写字母分类计数,并在屏幕上打印出来。
DATA SEGMENTINFOR1 DB 0AH,0DH,"Please Press Any Key to input a letter:$"INFOR2 DB 0AH,0DH,"Lowercase Letter : $"INFOR3 DB 0AH,0DH,"Uppercase Letter : $"INFOR4 DB 0AH,0DH,"Digit : $"INFOR5 DB 0AH,0DH,"Other Letter : $"
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START:
PRINT MACRO STR,RHS ; MACRO 为宏LEA DX,RHSMOV AH,09HINT 21HMOV DL,STR ADD DL,30HMOV AH,02H INT 21H
ENDMMOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09HINT 21H MOV BX,0 MOV CX,0
XUNHUAN:MOV AH ,01HINT 21H ;AL CMP AL,0DH ; \nJZ DISPLAYCMP AL,'0'JB OTHERCMP AL,'9'JBE DIGITCMP AL,'A'JB OTHERCMP AL,'Z'JBE UPPERCMP AL,'a'JB OTHERCMP AL,'z'JBE LOWERJMP XUNHUAN LOWER:INC BLJMP XUNHUAN ; UPPER: INC BHJMP XUNHUAN DIGIT: INC CLJMP XUNHUAN OTHER: INC CH JMP XUNHUAN DISPLAY:PRINT BL,INFOR2PRINT BH,INFOR3PRINT CL,INFOR4PRINT CH,INFOR5MOV AH,4CHINT 21H
CODE ENDS
END START
小结:
1. 如何判断回车符号?
回车符(跳转到本行开头) 0DH
换行符(到下一行) 0AH
2. 在输出的时候记得加上30H,用来以ASCII码的形式输出
2.输入一段数字字符,将其转换为数值,然后从1加到该数值,最后以十进制数值形式输出总和
DATA SEGMENT INF1 DB 0AH,0DH,"PLEASE INPUT A NUMBER (0~361): $"MSG2 DB 0AH,0DH," 2 Hexadecimal : $"MSG3 DB 0AH,0DH,"THE SUM(1+2+3+....) IS : $"IBUF DB 100,0,100 DUP('$')OBUF DB 6 DUP(?)
DATA ENDS
CODE SEGMENT ASSUME CS:CODE ,DS:DATA
START:
PRINT_MSG MACRO parameterLEA DX,parameterMOV AH,09HINT 21H
ENDMMOV AX,DATA MOV DS,AX PRINT_MSG INF1 LEA DX,IBUF ;输入一个十进制数字(<361 )MOV AH,0AHINT 21H MOV CL,IBUF+1 MOV CH,0 MOV AX,0LEA SI,IBUF+2
AGAIN: MOV DX,10MUL DX ;如果参数是字节,将把 AL 做乘数, 结果放在 AX;如果参数是字 , 将把 AX 做乘数, 结果放在 DX:AXAND BYTE PTR [SI],0FH ADD AL,[SI] ADC AH,0INC SI LOOP AGAIN ; AX 中存放累加和; BX 用来存放每次要加的数值MOV CX,AX MOV AX,0MOV BX,1
LOOP2:ADD AX,BXINC BXLOOP LOOP2 MOV BX,OFFSET OBUF+5 MOV BYTE PTR [BX],'$'MOV CX,10
LOOP1:MOV DX,0DIV CX ; 被除数默认存放在 AX 中 ; 除数是8位, 则被除数为 AX, AL 存储商,AH 储存余数; 除数是16位,则被除数为 DX:AX ,AX 储存商,DX 储存余数ADD DL,30H DEC BXMOV [BX],DLOR AX,AXJNZ LOOP1;PRINT_MSG MSG3MOV DX,BX MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDS
END START
小结:
1. MUL 乘法指令
如果参数是字节,将把 AL 做乘数, 结果放在 AX
如果参数是字 , 将把 AX 做乘数, 结果放在 DX:AX
2. ADC 指令
- 要求低位字节相加,高位字节再相加时就要考虑低位相加的进位,即CF,这时就要用到ADC指令。
ADD AL,[SI] ADC AH,0
3. 为什么不能超过 361 ?
因为从1加到361,会是65341,再大的话会超出AX的存储范围。
4. DIV 指令
除数是8位, 则被除数为 AX, AL 存储商,AH 储存余数
除数是16位,则被除数为 DX:AX ,AX 储存商,DX 储存余数
转载于:https://www.cnblogs.com/Tattoo-Welkin/p/10335287.html
汇编语言程序设计之二相关推荐
- 南邮汇编语言程序设计实验二————用户登录验证程序的设计
目录 实验环境(实验设备) 实验要求 实验代码 相关函数 实验结果 实验环境(实验设备) 硬件:微型计算机 软件:Windows 操作系统.汇编语言开发工具MASM或TASM 实验要求 1. 程序执行 ...
- 汇编语言实验二 汇编语言程序设计(顺序、多分支、循环)
**实验二 汇编语言程序设计(顺序.多分支.循环)** 一. 实验目的 1.掌握顺序和循环程序结构和设计方法: 2.熟悉在PC机上建立.汇编.连接.调试和运行8086/8088汇编语言程序的过程. 二 ...
- 合肥工业大学2021汇编语言程序设计上机实验二
实验二 高级汇编程序设计 实验目的 1. 掌握中断服务子程序的编写. 2. 汇编语言与高级语言的混编. 实验内容 1.挂接1CH中断,正计时90秒后退出.要求屏幕显示0-89的秒数. 2.VC++中 ...
- 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】答案
内容修订.解析.扩展: <IBM-PC汇编语言程序设计>(第2版)[沈美明 温冬婵]--自编解析与答案 第 一 章. 习 题 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数 ...
- 汇编语言程序设计,计算比赛成绩
一.设计内容与设计要求 1.课程设计目的: <汇编语言程序设计>是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉.掌握8088宏汇编语言程序设计的基本方法和 ...
- 汇编语言ax=0c58ch,第4章89C5汇编语言程序设计.ppt
第4章89C5汇编语言程序设计 三.实验说明 1.因为本实验是交通灯控制实验,所以要了解实际交通灯的变化情况和规律.假设一个十字路口为东西南北走向.初始状态0为东西红灯,南北红灯.然后转状态1东西绿灯 ...
- 《汇编语言程序设计》(双语)上机指导
唔.省得每次忘带U盘... <汇编语言程序设计>(双语)上机指导... 1 实验1 建立windows环境下32位汇编语言开发环境... 2 实验2 Instruction Format ...
- Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(畅销10年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 75 ...
- 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案
网上的答案是第一版的,重新整理了一下 <汇编语言程序设计教程>人民邮电出版社第二版 刘慧婷,王庆生 主编 习题及参考答案 更多汇编内容请访问:omegaxyz.com 第一章至第五章 核对 ...
最新文章
- python制作解压工具_使用python制作一个解压缩软件
- python如何调用图片-python实现读取并显示图片的两种方法
- 深入理解JVM(5)——虚拟机类加载机制
- Powershell 时间相关
- clion小白使用技巧(持续更新中)
- 一文读懂数据挖掘建模预测
- Navicat相关注册码
- ReviewBoard+SVN配置强制code review
- ECMAScript标准命名
- 编译原理 —— 知识结构导图
- 2018蓝桥杯 航班时间和乘积尾零
- webaudio ajax,Web Audio 入门之读取左右声道数据
- POJ 1637 混合图的欧拉回路判定
- 文本的检测、识别实战:使用 Tesseract 进行 OpenCV OCR 和文本识别
- 世纪互联数据中心有限公司
- Flowable流程引擎和各类表说明
- 网站优化问题:雅虎网站优化35条
- 风力发电机的简单性能仿真
- 使用PMS系统项目管理
- 【图像识别】基于模板匹配实现蓝色、绿色、黄色车牌识别附matlab代码