DATAS SEGMENT
;此处输入数据段代码
;变量定义
;Y1 DB 1,2,3 == 01 02 03 - 5 DUP(3)03 03 03 03 03····
;Y2 BW 1,2,3 == 0100 0200 0300 - 2 DUP(1,2)==0100 0200 0100 0200····
A1 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 BX,A1
F1: MOV AH,1
INT 21H
MOV [BX],AL
INC BX
CMP AL,'q'
JE F2
JMP F1
F2: LEA SI,A1
;换行
MOV AH,2
MOV DL,13
INT 21H
MOV AH,2
MOV DL,10
INT 21H
X2: MOV AL,[SI]
CMP AL,'q'
JE T
JNE X1
;大写转小写,小写转大写。数字不变
;MOV AH,1
;INT 21H
X1: cmp AL,'0';和字符0的ascii比较
JB T1
CMP AL,'9';和字符9的ascii比较
JA T2
;0-9数字
MOV DL,AL
MOV AH,2
INT 21H
INC SI
JMP X2
;大转小
T2:CMP AL,'A'
JB T1
CMP AL,'Z'
JA T3
MOV DL,AL
ADD DL,20H
MOV AH,2
INT 21H
INC SI
JMP X2
T3:CMP AL,'a'
JB T1
CMP AL,'z'
JA T1
MOV DL,AL
SUB DL,20H
MOV AH,2
INT 21H
INC SI
JMP X2
;字符原样输出
T1:MOV DL,AL
MOV AH,2
INT 21H
INC SI
JMP X2
T: MOV AH,2
SUB AL,20H
MOV DL,AL
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START