汇编第五章课后题答案 下载本文

内容发布更新时间 : 2024/6/27 2:45:57星期一 下面是文章的全部内容请认真阅读。

1.从屏幕上输入小写字母,转化为大写字母输出 (解法1)

DATA SEGMENT

MESSAGE DB \

MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符 DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE START:

MOV AX,DATA MOV DS,AX

LEA DX,MESSAGE ;输出ENTER A STRING MOV AH,09H INT 21H

LEA DX,MAXLENGTH ;输入字符串

MOV AH,0AH ;键盘输入到缓冲区,DS:DX=缓冲区首址 INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数

MOV AH,02H ;输出回车换行 MOV DL,0AH INT 21H MOV AH,02H MOV DL,0DH INT 21H

MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL

MOV CH,0 MOV BH,02H

LEA SI,MAXLENGTH+2;取字符串的基地址放入SI XUN: MOV AL,[SI] CMP AL,'Z'

JBE S1 ;小于等于'Z'转移 JMP S3 S1:CMP AL,'A'

JAE DA ;大于等于'A'转移 JMP OUTPUT DA:ADD AL,20H JMP OUTPUT

S3:CMP AL,'z' ;小于等于小Z转移 JBE S4

S4:CMP AL,'a' ;大于等于小a转移 JAE XIAO JMP OUTPUT XIAO: SUB AL,32 JMP OUTPUT OUTPUT: MOV DL,AL

MOV AH,02H ;显示输出 INT 21H

INC SI LOOP XUN MOV AH,4CH INT 21H CODE ENDS END START (解法2)

;将输入的小写字母转化为大写字母输出,输入回车结束 CODE SEGMENT ASSUME CS:CODE BEGIN: MOV AH,01H INT 21H

CMP AL,0DH ;ASCII OF CARRIAGE RETURN JE EXIT

CMP AL,61H ;ASCII OF 'a' JB STOP

CMP AL,7AH ;ASCII OF 'z' JA STOP SUB AL,20H STOP: MOV DL,AL MOV AH,2 INT 21H JMP BEGIN EXIT: MOV AH,4CH INT 21H RET