输出学生姓名(汇编语言)

给出下的程序段,其中数据区存放了若干学生的姓名,请输入学生序号,在屏幕最上面一行输出对应学生的姓名

assume cs:code, ds:data

data segment

   stu dw stu1,stu2,stu3,stu4,stu5

   stu1 db 'Zhang San',0

   stu2 db 'Li Si',0

   stu3 db 'Wang Wu',0

   stu4 db 'Zhao Liu',0

   stu5 db 'Qian Er',0

data ends

注意:clear子程序比较重要,他负责清除当前屏幕第一行,防止前面显示的学生姓名对后面需要显示的学生姓名有干扰。

assume cs:code, ds:data

data segment

   stu dw stu1,stu2,stu3,stu4,stu5

   stu1 db 'Zhang San',0

   stu2 db 'Li Si',0

   stu3 db 'Wang Wu',0

   stu4 db 'Zhao Liu',0

   stu5 db 'Qian Er',0

data ends

code  segment

start:

      mov ax, data

      mov ds, ax

      mov ax, 0b800h

      mov es, ax

input:   ;输入字符

      mov ah,1

      int 21h;调用21h中断的第1号功能,从键盘读入字符,AL保存读入字符的ASCII码

      
      sub al, 30h;相减后,al中保存的ASCII变为数字

      mov ah,0

      cmp ax,0;为0时退出,为1-5时在屏幕最上面一行输出对应人的姓名

      je exit

      cmp ax,5;大于5时,无响应,可继续输入其他字符

      ja input

      add ax,ax

      sub ax,2

      mov bx,ax

      mov bx,stu[bx]

      mov si,0

      call clear;调用子程序



output:

      mov dl,[bx];将名字输出到屏幕的第一行

      cmp dl,0

      je input

      mov es:[si],dl

      inc bx

      add si,2

      jmp output



exit: mov ah,4ch;输入的字符等于0就退出

      int 21h


;子程序名:clear

;功    能:清除第一行,通过把显示屏第一行设置为空格符来达到清除第一行的目的

;入口参数:无

;出口参数:无

clear proc

      push bx

      push cx

      push es

      mov bx,0b800h

      mov es,bx

      mov bx,0

      mov cx,80;一行共80个字

clear1:

      mov byte ptr es:[bx],' ';循环把第一行设为空格符

      add bx,2

      loop clear1



      pop es

      pop cx

      pop bx

      ret

clear endp



code  ends

end start

运行结果:

①输入字符1时:

 

②输入字符2时:

③输入字符3时:

 

④输入字符4时:

 

⑤输入字符5时:

⑥输入大于5的字符时,没有变化。

⑦输入字符0时,退出。

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值