汇编语言上机考试2

题目:请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。

这道题第一道题差不多,首先读取所有的字符,一个一个判断是不是大写,是就转换成小写,不是输出。

需要注意的是masm考试软件给得ascii表是十六进制的,这个BUG查了很久都没查出来。。。

DATAS SEGMENT

    BUF1 DB 100

    DB ?

    DB 100 DUP(?)


DATAS ENDS


STACKS SEGMENT

STACKS ENDS



CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

    MOV AX,DATAS

    MOV DS,AX

    LEA DX,BUF1

    MOV AH,0AH;读入键盘输入的东西

    INT 21H

    MOV DL,0AH;换行

    MOV AH,02H

    INT 21H

    MOV BL,BUF1[1] ;缓存需要处理的个数

    MOV SI,2;设置起始位置

CHULI:

CMP BL,0;

JZ EXIT

CMP BUF1[SI],'A';是不是比A大(这里之判断了比A大,这样不够)

JNB ISDAXIE ;是的画跳到这里

JB ISNOT;不是

ISDAXIE:

CMP BUF1[SI],'Z';这里判断是不是比Z小,这样才能定位是大写字母

JA ISNOT  ;比Z大就不是大写字母了。

MOV CL,BUF1[SI] ;因为大写字需要处理,所以用CL缓冲一下。直接用DL也许也可以把

ADD CL,20H

MOV DL,CL

MOV AH,02H

INT 21H

INC SI

DEC BL

JMP CHULI

ISNOT:;其他字母直接输出。

MOV DL,BUF1[SI]

MOV AH,02H

INT 21H

INC SI

DEC BL

JMP CHULI

EXIT:

    ;此处输入代码段代码

    MOV AH,4CH

    INT 21H

CODES ENDS

    END START

你可能感兴趣的:(汇编语言上机考试2)