• 汇编语言-字母字符转换


    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
    复制代码
  • 相关阅读:
    Android Dalvik 虚拟机
    我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
    如何用java比较两个时间或日期的大小
    [安卓破解]听网页浏览器,无需注册即可语音朗读
    (step8.2.4)hdu 1846(Brave Game——巴什博奕)
    Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64
    HDU2084:数塔(DP)
    MySQL MVCC(多版本并发控制)
    POJ
    网易前端微专业,JavaScript程序设计基础篇:数组
  • 原文地址:https://www.cnblogs.com/xieyulin/p/7056432.html
Copyright © 2020-2023  润新知