汇编程序错误(大小写字母转换)

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:26:01
TITLE EX3
PAGE 50,70
;---------------------------------------------
DAT SEGMENT PARA 'DAT'
D0 DB 0DH,0AH
D1 DB 'AKFDjfjjecJIDJkdkjkJD','$'
DAT ENDS
;--------------------------------------------
STAC SEGMENT PARA STACK 'STAC'
STA1 DW 100 DUP(?)
STAC ENDS
;--------------------------------------------
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DAT
ASSUME SS:STAC,ES:DAT
STAR PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT
MOV DS,AX
MOV ES,AX
;----------------------------------------------
CALL TT
LEA DI,D1
CALL TT1
CALL TT
LEA DI,D1
CALL TT2
CALL TT
RET
STAR ENDP
;--------------------------------------------
TT1 PROC
GO:MOV AL,[DI]
CMP AL,'$'
JZ GO2
CMP AL,'A'
JB GO1
CMP AL,'Z'
JA GO1
ADD BYTE PTR [DI],20

根据题意,指令LEA DX,DS中的DS应为D0,你是想输出D1字符串之前,先输出一个回车、换行。

首先显示原字符串(未经大小写转换的);然后把字符串中的大写字母转换成小写字母,显示转换后的字符串;把字符串中的小写字母(经过第一次转换,字符串中的所有字母都是小写字母了)转换成大写字母,显示转换后的字符串,这时,字符串中的所有字母都是大写的了。