用80x86汇编语言编程:输入字符串,并把大写字符转为小写再输出

来源:互联网 发布:算法竞赛宝典淘宝 编辑:程序博客网 时间:2024/05/22 04:28

要求:
提示输入字符串;
输入任意字符串,Enter 结束输入;
将字符串中的大写字母转换为小写字母输出;
Enter程序退出。

 | 提问时间:2011-6-21 19:10 | 悬赏分:50 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当时,做而论道的程序虽然提问者被选做了最佳,但是因为问题还不算难,所以做而论道也没有把它收录到博客。
可是,在年前,突然收到通知,做而论道的答案被选为“精彩回答”了,呵呵,受宠若惊啊 !
那就把它写在这里吧。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
精彩回答:                   2011-6-21 21:25

DATA SEGMENT
    PARS  DB 255                ;准备接收255个字符.
    NNN   DB ?                  ;用于存放实际输入的个数.
    III   DB 255 DUP(?)         ;255字节的空间.

    MESG1  DB  13, 10, 'INPUT  CHAR: $' ;用于提示.
    MESG2  DB  13, 10, 'OUTPUT CHAR: $' ;用于提示.

DATA ENDS
;
CODE SEGMENT
    ASSUME  CS:CODE, DS:DATA
START:
    MOV  AX, DATA
    MOV  DS, AX

    MOV  DX, OFFSET MESG1
    MOV  AH, 9               ;9号功能调用,显示提示.
    INT  21H
    MOV  DX, OFFSET PARS
    MOV  AH, 10              ;10号功能调用,接收键盘输入.
    INT  21H
;---------------------------------------------------
    MOV  CL, NNN             ;收到字符的个数.
    MOV  CH, 0
    LEA  SI, III             ;收到字符的起始地址.
;----------------------------下面开始循环.
AGAIN:
    MOV  AL, [SI]
    CMP  AL, '['             ;- '['
    JNC  NEXT                ;> 'Z'
    CMP  AL, 'A'
    JC   NEXT                ;< 'A'
    OR   AL, 00100000B
    MOV  [SI], AL
NEXT:
    INC  SI
    LOOP AGAIN
;----------------------------循环结束.
    MOV  BYTE PTR [SI], '$'
    MOV  DX, OFFSET MESG2
    MOV  AH, 9               ;9号功能调用,显示提示.
    INT  21H
    MOV  DX, OFFSET III
    MOV  AH, 9               ;9号功能调用,显示.
    INT  21H
;----------------------------显示结束.
    MOV  AH, 4CH
    INT  21H
;============================
CODE  ENDS
    END  START

;====================================================
回答者: 做而论道 | 十五级 采纳率:43% 名人 达人
提问者对于答案的评价:非常感谢
原题网址:http://zhidao.baidu.com/question/282338864.html
;====================================================

0 0