汇编语言-字母字符转换

 

1. 题目:大小写字母字符互换

2. 要求:从键盘输入一个字符,如果该字符是回车符,直接退出程序,如果是小写字母,则转换为大写字母并显示;如果是大写字母,则转换为小写字母并显示;如果是非字母字符,则显示提示信息,并等待用户重新输入字符。

3. 提示: 首先判断是否是回车符,如果不是,则判断是否是大写字母或小写字母,如果是进行转换并输出,否则显示重新输入。大写字母ASCII码与小写字母ASCII之间相差20H,可以根据这个进行转换。

 1 ; Example assembly language program -- 

 2 ; Author:  karllen

 3 ; Date:    revised 5/2014

 4 

 5 .386

 6 .MODEL FLAT

 7 

 8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

 9 

10 INCLUDE io.h            ; header file for input/output

11 

12 cr      EQU     0dh     ; carriage return character

13 Lf      EQU     0ah     ; line feed

14 

15 .STACK  4096            ; reserve 4096-byte stack

16 

17 .DATA

18       promot      BYTE "Enter a char of letter ",cr,Lf,0

19       warning     BYTE "The char isn't a letter,enter again ",0

20       

21       answerLtoU  BYTE "The char is a lowercase,it's uppercase is "

22                   BYTE cr,Lf,0

23       answerUtoL  BYTE "The char is a uppercase,it's lowercase is "

24                   BYTE cr,Lf,0

25       char        BYTE 1 DUP(?)

26 .CODE

27 _start:

28       output   promot

29       input char,1

30       doGo:

31         mov bl,char

32         input char,1

33         cmp char,0dh

34         je  doWhCMP     ;cr deal the cr

35       jmp doGo

36       doWhCMP:

37               

38              cmp bl,41h

39              jl  inputAgain   ;the char < A,end and input again

40              cmp bl,5Ah

41              jle endUppertoL ;the char <= Z,so to judge it is or not lowercase

42                              ;the char is a uppercase

43        cmpLower:

44              cmp bl,61h     ;the char < a,end and input again

45              jl  inputAgain

46              cmp bl,7Ah     ;the char > z.end and input agian

47              jg  inputAgain

48              jmp endLowertoU ;the char is a lowercase

49                    

50        inputAgain:

51              output warning 

52              input  char,1

53              mov    bl,char

54              jmp    doGo

55        endUppertoL:

56              mov    al,bl

57              add    al,32             ;这里是十进制加减

58              mov    char,al

59              output answerUtoL

60              output char

61              jmp    endMain

62        endLowertoU:

63              mov    al,bl

64              sub    al,32

65              mov    char,al

66              output answerLtoU

67              output char

68        endMain:

69                        

70               INVOKE  ExitProcess, 0  ; exit with return code 0

71 

72 PUBLIC _start                   ; make entry point public

73 

74 END                             ; end of source code

 

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