汇编子程序嵌套结构程序 输入姓名及8个字符的电话号码,并以一定的格式显示出来。(NAME TEL)
题目要求:
编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来。
- 主程序TELIST:
显示提示符INPUT NAME
调用子程序INPUT_NAME输入姓名
显示提示符INPUT A TELEPHONE NUMBER
调用子程序INPHONE输入电话号码
调用子程序PRINTLINE显示姓名及电话号码 - 子程序INPUT_NAME:
调用键盘输入子程序GETCHAR,把输入的名字存放在INBUF缓冲区 中
把INBUF中的姓名移入输出行OUTNAME
-子程序INPHONE:
调用键盘输入子程序GETCHAR,把输入的8位电话号码存放在INBUF 缓冲区中
把INBUF中的姓名移入输出行OUTPHONE - 子程序PRINTLINE:
显示姓名及电话号码,格式为:
NAME TEL.
xxxxxx xxxxx
解题过程:
本次汇编语言程序设计要求的是输入一个名字和电话号码,并按照规则显示出来。
根据要求 我设计了一下几个子程序。
前两个是一个换行和一个输入的子程序,换行子程序可以显示换行,在主程序中会调用几次。而输入的子程序是输入一个字符并回显,也会经常调用到。
然后是三个比较长的子程序。前两个结构很相像,是把名字和电话号码输入到INBUF并回显,然后再把INBUF的数据传到输出行。由于名字和电话号码都是字符串,故程序很多可以复制。第三个是将名字和字符串输出的子程序。
因此,主程序结构就很明了了。先输出’input name’,然后调用输入名字的子程序;然后输出’input a telephone number’,再调用输入电话号码的子程序。最后输出 'NAME TEL$'和输入的数据,其中再有一些换行就可以了。
结果演示:
这里我附上全部代码,包含部分注释
代码:
DATAS SEGMENTS1 db 'input name:$'S2 db 'input a telephone number$' S3 db 'NAME TEL$'S4 DB 0AH,'$' INBUF db 10H dup(?)OUTNAME db 10H dup(?)OUTPHONE db 10H dup(?) S5 db ' $'
DATAS ENDSSTACKS SEGMENTdb 10H dup(?)
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc
START:MOV AX,DATASMOV DS,AXmov dx,offset S1;显示input namemov ah,09Hint 21Hcall ent ;换行call INPUT_NAME;2、调用子程序输入namecall ent ;换行mov dx,offset S2;显示input a telephone numbermov ah,09Hint 21HCALL ent ;换行call INPUT_TEL ;调用子程序输入phoneCALL ent ;换行call PRINT ;显示name和telMOV AH,4CHINT 21H
main endpGETCHAR proc ;输入一个字符->AL 并回显mov ah,01Hint 21Hret
GETCHAR ENDPent PROC ;显示回车 LEA DX,S4MOV AH,9INT 21HRET
ent ENDP
INPUT_NAME proc
;调用键盘输入子程序GETCHAR,把输入的姓名存放在INBUF缓冲区中
;把INBUF中的姓名移入输出行OUTNAMEpush axpush bxpush cx push dxpush simov cx,0mov bx,offset INBUF
inName:;不是回车的话al持续输入到bx(INBUF)call GETCHARcmp al,0dHjz endcharmov [bx],alinc bxinc cxjmp inName
endchar:inc cl;长度cl 作为循环次数mov al,24Hmov [bx+1],al;inbuf结束符号给最后一位(bx)mov bx,offset INBUF;bx重新指向INBUF第一位mov si,0
lop:mov dl,[bx]mov OUTNAME[si],dlinc siinc bxloop lopmov al,24Hmov OUTNAME[si],al;outname结束符号pop sipop dxpop cxpop bxpop axret
INPUT_NAME ENDPINPUT_TEL proc near
;调用键盘输入子程序GETCHAR,把输入的8位电话号码存放在INBUF缓冲区中
;把INBUF中的号码移入输出行OUTPHONE 结构同上push axpush bxpush cx push dxpush simov cx,0mov bx,offset INBUF
intel:call GETCHARcmp al,0dHjz endcharmov [bx],alinc bxinc cxjmp intel
endchar:inc clmov al,24Hmov [bx+1],al;inbuf结束符号mov bx,offset INBUFmov si,0
lop:mov dl,[bx]mov OUTPHONE[si],dlinc siinc bxloop lopmov al,24Hmov OUTPHONE[si],al;outname结束符号pop sipop dxpop cxpop bxpop axret
INPUT_TEL ENDPPRINT proc near;显示name和telpush axpush dxmov dx,offset S3mov ah,09Hint 21Hcall entmov dx,offset OUTNAMEint 21Hmov dx,offset S5int 21Hmov dx,offset OUTPHONEint 21Hpop dxpop axret
PRINT ENDP
CODES ENDSEND main
汇编子程序嵌套结构程序 输入姓名及8个字符的电话号码,并以一定的格式显示出来。(NAME TEL)相关推荐
- 【汇编】奇校验程序:输入一个字符,编写一个程序判断这个字符中1的个数,如果是偶数个1,则校验位(字符最高位)为1,如果是奇数个1,则校验位为0。并显示加入校验位前后该字符的二进制代码。
奇校验程序:输入一个字符,编写一个程序判断这个字符中1的个数,如果是偶数个1,则校验位(字符最高位)为1,如果是奇数个1,则校验位为0.并显示加入校验位前后该字符的二进制代码. 编译结果:字符'0'A ...
- 输入姓名,问好,字符切片
从键盘输入姓名,对姓和名切片,然后输出 输入格式: 从键盘输入姓名, 输出格式: 你好,***同学. *同学,很高兴认识你. **同学,我们交个朋友吧! 输入样例: 在这里给出一组输入.例如: 黄小燕 ...
- 输入姓名,问好,字符切片 (10 分)
从键盘输入姓名,对姓和名切片,然后输出 输入格式: 从键盘输入姓名, 输出格式: 你好,**同学. *同学,很高兴认识你. *同学,我们交个朋友吧! 输入样例: 在这里给出一组输入.例如: 黄小燕 # ...
- 如何使用if嵌套结构;实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型
如何使用if嵌套结构:实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型 一.从键盘上获取用户输入的身高和体重的数值 二.计算出国际肥胖指标BMI值 三.根据计算出的 ...
- 编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 高古尊 * 完成日期:2013 年 10月24 日 * 版 本 号:v ...
- 要求: 编写一个程序,提示用户输入: 姓名 ,身份证号(需要一次输完,中间用逗号分隔)随后打印用户的星座。 提示:输入功能用C实现会很简单,其他语言的话,就不用输入姓名和逗号了,直接输入身份证号就
#include <stdio.h>int main(void) {char name[10]; //存储姓名int a, b; //a代表月,b代表日printf("请输入姓名 ...
- PYthon作业通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成。 编写程序,完成以下功能: 输入姓名,若通讯录文件中存在,则讲该联系人信息输出;
"""通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成.编写程序,完成以下功能:输入姓名,若通讯录文件中存在,则讲该联系人信息输出:若不存在,则输出 ...
- 制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优
制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优 ...
- python输入姓名_Python——输入姓名,返回姓名笔画小程序
因为要做选票,选票候选人要按照姓氏笔画排序,正好自己在学习Python,就想着写一个返回姓名笔画的程序,程序基本实现了功能,但用户体验可能做的不好,后续有时间再修改吧! 核心思想还是查表,表是从字母对 ...
最新文章
- 算法之递归(3)- 链表操作
- 基于WebSocket实现聊天室(Node)
- 交叉分解+Cross decomposition
- 看漫画学python pdf下载_用python下载漫画并打包成pdf文件
- Makefile:自动化变量 $@,$^,$<,$?
- 协同推荐算法没有这么复杂,真的
- yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?
- python 帮助教师_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
- bison、lex版本不同造成的问题
- Some thoughts on dfs
- 用三层交换机实现大中型企业VLAN
- JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...
- MySQL学习笔记( 整理中)
- jdk,j2sdk,j2eesdk,jre 的区别和联系
- iphone4s在ios7下解决卡顿问题
- 2010年01期《程序员》配套源码及相关链接
- 清华计算机类专业介绍,清华大学研究生专业介绍:计算机技术
- 荣耀Magic5 Pro屏幕参数怎么样? 荣耀Magic5 Pro摄像头参数
- 2007年生日祝福:宝贝,谢谢您陪伴我走过人生风风雨雨,祝您2007年生日快乐!
- 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc