汇编一日一学(9)--响铃N次

;试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07)。

STACKS SEGMENT

dw 128 dup(0)

STACKS ENDS

CODES SEGMENT

START:

Input:

MOV AH,1 ;输入字符

INT 21H

CMP AL,'0'

JLE Input

CMP AL,'9'

JG Input

SUB AL,'0'

CBW ;扩展AL为AX

MOV CX,AX ;CX为响铃次数

Bell:

MOV DL,07H

MOV AH,2

INT 21H

LOOP Bell ;LOOP CX-- >=0

MOV AX,4C00H

INT 21H

CODES ENDS

END START

符号扩展指令

节扩展为字 CBW (convert byte to word)

指令的汇编格式:CBW

指令的基本功能:(AH)=00H 当(AL)的最高有效位为0时

(AH)=FFH 当(AL)的最高有效位为1时

指令对标志位的影响:不影响标志位

指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。

字扩展为双字 CWD (convert word to double word)

指令的汇编格式:CWD

指令的基本功能:(DX)=0000H 当(AX)的最高有效位为0时

(DX)=FFFFH 当(AX)的最高有效位为1时

指令对标志位的影响:不影响标志位

指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。

/

循环指令

循环 LOOP (loop)

指令的汇编格式:LOOP label

指令的基本功能:① (CX)←(CX)-1

        ② 若(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。

指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~ +127字节范围之内。

为零/相等时循环 LOOPZ/LOOPE (loop while nonzero or equal)

指令的汇编格式:LOOPNZ/LOOPNE label

指令的基本功能:① (CX)←(CX)-1

        ② 若ZF=1且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。

指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~ +127字节范围之内。

不为零/不相等时循环 LOOPNZ/LOOPNE (loop while nonzero or not equal)

指令的汇编格式:LOOPNZ/LOOPNE label

指令的基本功能:① (CX)←(CX)-1

        ② 若ZF=0且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。

指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~ +127字节范围之内。

//

响铃的ASCII码为07

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值