汇编语言-------从键盘接收一个无符号数 N,然后响铃 N 次

微机原理课程上机实验之一

题目:

      试编写一程序,要求从键盘接收一个无符号数 N,然后响铃 N 次(响铃的 ASCII 码为 07H):
     1)N 为一位数;
     2)N 为两位数。

 

     已经在DOSBOX/Emu8086 下正确运行过了

     详见注释

CODES SEGMENT 
	;ASSUME CS:CODES,DS:DATA 
	ASSUME CS:CODES
START: 
	call getInt
	mov cl,al
lp: 
	;mov DL,'7' ;准备响铃
	mov DL,07H ;准备响铃
	mov AH,02H ;显示一个字符的DOS调用,实际为响铃
	INT 21H
	LOOP lp	
	mov	ah,4CH
	int 21H
	;没有退出,应用程序就退不到操作系统
getInt: 
    push BX  ;保护现场
    push DX 
    push CX 
       ;此处不能pushf,因为flags是返回值
    mov AX,0 ;初始化 
    mov BX,0
    mov CX,0
	mov DX,0
getInt_XUNHUAN:
    mov AH ,01H
    int 21H ; 输入一个字符,一定存储在 AL 中
    cmp  AL,0DH ; 判断回车符 
    jz  getInt_RESULT ;    zf=0 判断是回车
    cmp  AL,30H
    jb   getInt_XUNHUAN  ; < 0
    cmp  AL,39H ;<= 9 && > 0
    jbe  getInt_SUM_TO_AX   
    jmp  getInt_XUNHUAN ;继续循环 
getInt_SUM_TO_AX: 
    mov AH,0 ;清除 AX 高位
    push AX  ;保存 AX
    mov AX,CX  ;将原先的值乘以 10 ,实质上乘起来的值放在了 CX 中 
    mov BX,10
        ;如果参数是字节,将把 AL 做乘数, 结果放在 AX
        ;如果参数是字 , 将把 AX 做乘数, 结果放在 DX:AX
    mul BX 
    mov DX,0
    mov CX,AX 
	pop AX
    sub AL,30H
    add CX,AX 
    jmp  getInt_XUNHUAN    
getInt_RESULT:
    mov AX,CX
    pop BX  ;恢复现场
    pop DX 
    pop CX
    ret  
CODES ENDS 
	END START

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值