1、用 INT 21H 的 1 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
DATAS SEGMENT
ARR DB 300 DUP(0)
NUM DW 0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,ARR
L1: MOV AH,01H
INT 21H
CMP AL,0DH
JE NEXT
MOV [SI],AL
INC SI
INC NUM
JMP L1
NEXT:
MOV AH,02H
MOV DL,0AH
INT 21H
MOV CX,NUM
DEC SI
L2: MOV AH,02H
MOV DL,[SI]
INT 21H
DEC SI
LOOP L2
EXIT:
MOV AH,4CH
INT 21H
CODES ENDS
END START
S1 SEGMENT
NUM DW 12
STR1 DB 30 DUP(?) ;无STR的变量名
S1 ENDS
S2 SEGMENT STACK
DW 60H DUP(?)
TOP LABEL WORD
S2 ENDS
S3 SEGMENT
ASSUME CS:S3,DS:S1,SS:S2
MAIN PROC FAR
MOV AX,S2
MOV SS,AX
LEA SP,TOP
MOV AX,S1
MOV DS,AX
MOV CX,NUM ;循环12次
LEA SI,STR1
L1:
PUSH CX
MOV BX,[SI]
CMP BX,0DH
JE NEXT
MOV AH,1
INT 21H
MOV [SI],AL
INC SI
POP CX
LOOP L1
NEXT:
MOV AH,02
MOV DL,0AH
INT 21H
MOV CX,NUM
L2:PUSH CX
DEC SI
MOV DL,[SI]
MOV AH,2
INT 21H
POP CX
LOOP L2
MAIN ENDP
S3 ENDS
END MAIN
2、用 INT 21H 的 A 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
S1 SEGMENT
MAXL DB 30 ;最大长度
RLEN DB ? ;实际长度,在调用A号功能时候自动填充
STR1 DB 30H DUP(?),0DH,0AH,'$' ;0AH号功能的初始化固定格式
S1 ENDS
S2 SEGMENT STACK
DW 60H DUP(?)
TOP LABEL WORD
S2 ENDS
S3 SEGMENT
ASSUME CS:S3,DS:S1,SS:S2
MAIN PROC FAR
MOV AX,S2
MOV SS,AX
LEA SP,TOP
MOV AX,S1
MOV DS,AX
MOV AH,0AH
LEA DX,MAXL
INT 21H
;换行输出
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
;倒序输出
MOV CL,RLEN
XOR CH,CH
LEA SI,STR1
ADD SI,CX
DEC SI ;SI--
L1:MOV DL,[SI]
MOV AH,2
INT 21H
DEC SI
LOOP L1
;结束
MOV AH,4CH
INT 21H
MAIN ENDP
S3 ENDS
END MAIN
1254

被折叠的 条评论
为什么被折叠?



