汇编语言:输出一个小写字母的前导字母、自身与后续字母

汇编语言:输出一个小写字母的前导字母、自身与后续字母

题目要求

从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。
要求小写字母“a”的前导字母输出“z”,小写字母“z”的后续字母输出“a”,输入非小写字母则输出错误提示。

编程平台

Masm for Windows 集成实验环境 2012.5

代码实现

DATAS SEGMENT
    input DB 'Enter a lowercase letter: $'
    result DB 13,10,'Leading, itself and following letters: $'
    error DB 'non-lowercase letter!$'
DATAS ENDS

STACKS SEGMENT STACK
    DB 200H DUP(?)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
;主程序
MAIN PROC
    MOV AX,DATAS
    MOV DS,AX
    
    LEA DX,input;输入提示
    MOV AH,9H
    INT 21H
    
    MOV AH,1H;读取一个字符
    INT 21H
    MOV BL,AL;BL用于存放输入的字符
    
    LEA DX,result;输出提示
    MOV AH,9H
    INT 21H
    
    ;输入非小写字母数据则输出错误提示
    CMP BL,61H
    JB fail
    CMP BL,7AH
    JG fail
    
    ;假设输入的字母不为a或z
    MOV BH,BL
    DEC BH;BH用于存放前导字母
    MOV CL,BL
    INC CL;CL用于存放后续字母

    ;判断输入的字符是否为a或z
    CMP BL,61H;是否为a
    JNE a
    MOV BH,7AH;将前导字母置为‘z’
    JMP b
  a:
    CMP BL,7AH;是否为z
    JNE b
    MOV CL,61H;将后续字母置为‘a’
    
    ;输出要求的三个字母
  b:
    MOV DL,BH;调用子程序输出前导字母
    CALL SUBP
    MOV DL,BL;调用子程序输出原字母
    CALL SUBP
    MOV DL,CL;调用子程序输出后续字母
    CALL SUBP
    
    JMP sucess
    
fail:
    LEA DX,error;输出错误提示
    MOV AH,9H
    INT 21H
    
sucess:
    MOV AH,4CH
    INT 21H
MAIN ENDP
;子程序
;功能:输出单个字母。
;入口参数:DL存放要输出的单个字母。
SUBP PROC
    MOV AH,2H
    INT 21H
    
    RET
SUBP ENDP
CODES ENDS
    END MAIN

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值