实验2
1、编写一个程序,使用INT 21H的2号功能,实现“Hello, world!”的显示。
;1、编写一个程序,使用INT 21H的2号功能,实现“Hello, world!”的显示。
DATA SEGMENT
BUF DB 'Hello, world !$'
DATA ENDS
STACK SEGMENT STACK 'STACK'
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
LEA SI,BUF ; SI指向字符串首地址
NEXT:
MOV AL, [SI];移到寄存器
INC SI;i++
CMP AL,'$';检查是否到达字符串末尾
JE EXIT; 是则退出循环
MOV DL,AL; 将字符放入DL(2号功能要求)
MOV AH,02H; 设置功能号02H(显示字符)
INT 21H; 调用中断输出字符
JMP NEXT; 继续循环
EXIT:
MOV AH,4CH; 程序终止功能
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
2、用INT 21H的1号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
;2、用INT 21H的1号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
DATAS SEGMENT
BUF DB 36 DUP(?)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
MOV AX,DATAS
MOV DS,AX
MOV CX,0;记录数组长度
LEA SI,BUF
NEXT:;01H字符输入
MOV AH,01H
INT 21H
MOV [SI],AL
INC SI
INC CX
CMP AL,0DH;判断回车结束
JNE NEXT
OUTPUT:;02H字符倒序输出
SUB SI,1
MOV DL,[SI]
MOV AH,02H
INT 21H
LOOP OUTPUT
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN
3、用 INT 21H 的A号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
;3、用 INT 21H 的A号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。
DATAS SEGMENT;实验2第3小题
BUF DB 50,?,50 DUP(?) ; 缓冲区结构:最大长度|实际长度|字符数组
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
MOV AX,DATAS
MOV DS,AX
LEA DX,BUF
;0A输入字符串功能
MOV AH,0AH
INT 21H
;A号功能要求
MOV CL,BUF+1;记录长度,BUF是DB类型只能存CL
MOV CH,0;高位清0
LEA SI,BUF+2;真实存储字符串的开头地址
ADD SI,CX;指向字符串尾
OUTPUT:;02H字符倒序输出
SUB SI,1
MOV DL,[SI]
MOV AH,02H
INT 21H
LOOP OUTPUT
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN