1.编写一个程序,使用 INT 21H 的 2 号功能,实现“Hello, world!”的显示。
DATAS SEGMENT
STRING DB 'HELLO WORLD!',0DH,0AH
;ODH,0AH为回车,换行
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
MAIN PROC MAIN
MOV AX,DATAS
MOV DS,AX
LEA SI,STRING
L1:
MOV DX,[SI]
MOV AH,2
INT 21H
INC SI
CMP DL,0AH
JNE L1
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN
2.用 INT 21H 的 1 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
STACKS SEGMENT
DW 30H DUP(0)
TOP LABEL WORD
STACKS ENDS
;DATAS SEGMENT
;COUNT DB 0
;DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,SS:STACKS;,DS:DATAS
MAIN PROC FAR
;MOV AX,DATAS
; MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
LEA SI,TOP
L1: MOV AH,1
INT 21H
CMP AL,0DH
JE L2
PUSH AX
;INC COUNT
JMP L1
L2: POP DX
MOV AH,2
INT 21H
;DEC COUNT
;MOV CL,COUNT
;CMP CL,0
CMP SP,SI
JNE L2
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN
3.用 INT 21H 的 A 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
CODES SEGMENT
ASSUME CS:CODES
MAIN PROC FAR
MOV AH,0AH
INT 21H
MOV SI,DX
MOV AL,DS:[SI+1];存放的实际输入字符数只放了一个字节所以需要扩展
CBW
ADD SI,2
MOV DI,SI;将输入的第一个字符'h'的地址存放在di中
DEC DI;*
ADD SI,AX
SUB AX,AX;因为要倒序输出所以需要将最后一个字符的地址存进去
L1:
MOV DL,DS:[SI]
DEC SI
MOV AH,2
INT 21H
CMP SI,DI;*因为先减再比较,所以di要从自减开始
JNE L1
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN