题目要求:

编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及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,如果是奇数个1,则校验位为0。并显示加入校验位前后该字符的二进制代码。

    奇校验程序:输入一个字符,编写一个程序判断这个字符中1的个数,如果是偶数个1,则校验位(字符最高位)为1,如果是奇数个1,则校验位为0.并显示加入校验位前后该字符的二进制代码. 编译结果:字符'0'A ...

  2. 输入姓名,问好,字符切片

    从键盘输入姓名,对姓和名切片,然后输出 输入格式: 从键盘输入姓名, 输出格式: 你好,***同学. *同学,很高兴认识你. **同学,我们交个朋友吧! 输入样例: 在这里给出一组输入.例如: 黄小燕 ...

  3. 输入姓名,问好,字符切片 (10 分)

    从键盘输入姓名,对姓和名切片,然后输出 输入格式: 从键盘输入姓名, 输出格式: 你好,**同学. *同学,很高兴认识你. *同学,我们交个朋友吧! 输入样例: 在这里给出一组输入.例如: 黄小燕 # ...

  4. 如何使用if嵌套结构;实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型

    如何使用if嵌套结构:实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型 一.从键盘上获取用户输入的身高和体重的数值 二.计算出国际肥胖指标BMI值 三.根据计算出的 ...

  5. 编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入

    /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 高古尊 * 完成日期:2013 年 10月24 日 * 版 本 号:v ...

  6. 要求: 编写一个程序,提示用户输入: 姓名 ,身份证号(需要一次输完,中间用逗号分隔)随后打印用户的星座。 提示:输入功能用C实现会很简单,其他语言的话,就不用输入姓名和逗号了,直接输入身份证号就

    #include <stdio.h>int main(void) {char name[10]; //存储姓名int a, b; //a代表月,b代表日printf("请输入姓名 ...

  7. PYthon作业通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成。 编写程序,完成以下功能: 输入姓名,若通讯录文件中存在,则讲该联系人信息输出;

    """通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成.编写程序,完成以下功能:输入姓名,若通讯录文件中存在,则讲该联系人信息输出:若不存在,则输出 ...

  8. 制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优

    制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优 ...

  9. python输入姓名_Python——输入姓名,返回姓名笔画小程序

    因为要做选票,选票候选人要按照姓氏笔画排序,正好自己在学习Python,就想着写一个返回姓名笔画的程序,程序基本实现了功能,但用户体验可能做的不好,后续有时间再修改吧! 核心思想还是查表,表是从字母对 ...

最新文章

  1. 算法之递归(3)- 链表操作
  2. 基于WebSocket实现聊天室(Node)
  3. 交叉分解+Cross decomposition
  4. 看漫画学python pdf下载_用python下载漫画并打包成pdf文件
  5. Makefile:自动化变量 $@,$^,$<,$?
  6. 协同推荐算法没有这么复杂,真的
  7. yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?
  8. python 帮助教师_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
  9. bison、lex版本不同造成的问题
  10. Some thoughts on dfs
  11. 用三层交换机实现大中型企业VLAN
  12. JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...
  13. MySQL学习笔记( 整理中)
  14. jdk,j2sdk,j2eesdk,jre 的区别和联系
  15. iphone4s在ios7下解决卡顿问题
  16. 2010年01期《程序员》配套源码及相关链接
  17. 清华计算机类专业介绍,清华大学研究生专业介绍:计算机技术
  18. 荣耀Magic5 Pro屏幕参数怎么样? 荣耀Magic5 Pro摄像头参数
  19. 2007年生日祝福:宝贝,谢谢您陪伴我走过人生风风雨雨,祝您2007年生日快乐!
  20. 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc

热门文章

  1. 基于 python 多光谱遥感数据处理、图像分类、定量评估及机器学习方法
  2. Python Josephus(约瑟夫问题)算法
  3. 第二十五章 SQL函数 CHAR
  4. anki 插入表格_Anki导入导出之Excel也能批量制卡
  5. xcode php开发工具,给宝宝的第一份礼物——一个好名字
  6. 小工具---迅雷、快车、QQ旋风解密及加密
  7. katalon系列五:使用Katalon Studio手动编写WEB自动化脚本
  8. 开启Python学习之路 必知必会的知识!
  9. 电脑QQ无法打开的解决办法
  10. css 去掉浏览器记住账号密码后 input输入框 黄色背景