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

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

  • 题目要求
  • 编程平台
  • 代码实现

题目要求

从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。
要求小写字母“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

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

你可能感兴趣的:(汇编语言)