# 汇编作业

905人阅读 评论(3)

1 在进行输入和输出之前必须先显示相应的提示信息；提示信息必须独占一行；输入必须用回车符结束；

2 将字符中的大写字母转化为小写字母并将转化后的字符串在屏幕上显示；

3 统计字符串中的非数字字符（‘0'——‘9'以外的字符）个数，以十进制输出；

4 输出字符串中包含的小写英文字符里面ASCII值最小的一个；

data segment

inpinfo db 'please input:',10,13,'$' str db 512 dup(?) BTL db 10,13,'after convert big to small they are:',10,13,'$'

numinfo db 10,13,'the number not num is :',10,13,'$' wordinfo db 10,13,'the smallest word is :',10,13,'$'

worderror db 10,13,'no small word exist!',10,13,'\$'

count db 0

little dw 122  ;'z'+1

data ends

assume cs:code,ds:data

code segment

start:

mov ax,data

mov ds,ax

mov si,0

;******input

MOV DX,OFFSET INPINFO

MOV AH,09H

INT 21H

INPUT_T1:

mov ah,01h

int 21h

mov str[si],al

inc si

cmp al,13

je FIND

jne INPUT_T1

;*****找出其中ASII码最小的一个字符

FIND:

DEC SI

MOV BX,SI

mov si,0

mov dh,123

find_0:

mov cl,str[si]

cmp cl,'a'

jb  find_1

cmp cl,'z'

ja  find_1

cmp cl,dh

jb give

inc si

cmp si,bx

je print_it

jne find_0

give:

mov dh,cl

inc si

cmp si,bx

je print_it

jne find_0

find_1:

inc si

cmp si,bx

je print_it

jne find_0

print_it:

cmp dh,123

je fail

push dx

lea dx,wordinfo

mov ah,09h

int 21h

pop dx

mov dl,dh

mov ah,02h

int 21h

jmp CONVERT

fail:

lea dx,worderror

mov ah,09h

int 21h

jmp CONVERT

; *******FIND OK

;*******将其中的大写转小写

CONVERT:

mov si,0

mov ah,09

lea DX,BTL

INT 21H

CONVT_1:

mov dl,str[si]

CMP DL,'A'

JB  CONVT_2

CMP DL,'Z'

JA  CONVT_2

MOV STR[SI],DL

inc si

cmp si,bx

jne CONVT_1

je OUTPUT

CONVT_2:

INC SI

cmp si,bx

jne CONVT_1

je OUTPUT

OUTPUT:

MOV SI,0

OUT_1:

MOV DL,STR[SI]

MOV AH,02H

INT 21H

INC SI

CMP BX,SI

JNE OUT_1

JE count_no

;**********大写转小写完成

;**********计算非数字的个数

count_no:

MOV CL,0

mov si,0

COUNT_0:

mov al,str[si]

cmp al,'0'

jb  count_1

cmp al,'9'

ja  count_1

inc si

cmp si,bx

jne COUNT_0

je output_num

count_1:

inc si

cmp si,bx

jne count_0

je output_num

output_num:

lea dx,numinfo

mov ah,09h

int 21h

MOV AX,0

mov AL,count

MOV CL,10

DIV CL

PUSH AX

MOV DL,AL

mov ah,02h

or dl,30h

int 21h

POP AX

MOV DL,AH

OR DL,30H

MOV AH,02H

INT 21H

jmp EXIT00

;**************统计OVER

exit00:

mov ax,4c00h

int 21h

code ends

end start

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：61664次
• 积分：1126
• 等级：
• 排名：千里之外
• 原创：45篇
• 转载：12篇
• 译文：0篇
• 评论：17条
最新评论