汇编功能码
使用方法:功能码放在AH寄存器中,配合DX等寄存器使用。遇到 INT 21H 语句执行。
不同的功能码对应实现不同功能。可以类比用编译器写程序时编译报错的“错误”编码,一个编码对应一类错误。此处功能码对应实现输入或者输出的不同功能。需要注意的是,读入的‘1’是字符‘1’,对应ASCLL码为31H(49D),不能读入数字1
01:从键盘读入一个字符至AL,有回显(即可以在屏幕上显示输入的数)
MOV AH, 01H
INT 21H
读入的字符储存在AL里
02:将DL中的数字对应的字符输出到屏幕
MOV AH,2
MOV DL,'P'
INT 21H
要输出的字符储存在DL里
08:从键盘读入一个字符至AL,无回显
功能同1
09:将DX中内容所指地址输出,直到‘$'停止
MOV AH,9
LEA DX,MSG
INT 21H
MSG地址储存在DX中
10:从键盘输入字符串存储在DX所指内存
MOV AH,10
LEA DX,BUF
INT 21H
9、10功能例代码完整版
BUF DB 80,?,100 DUP(?)
这句话的意思:第一个数代表最多能输入多少DB,第二个数代表实际输入多少DB,100 DUP(?)代表设置输入缓冲区长度。一般来讲第一个数和第三个应该是一样的,但是不一样也可以。
DATA SEGMENT
BUF DB 80,?,100 DUP(?)
MSG DB "PLEASE INPUT A STRING",10,13,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
;输出输入提示
MOV AH,9
LEA DX,MSG
INT 21H
;用户键盘输入一串
MOV AH,10
LEA DX,BUF
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
这是debug下看到的结果。需要注意的是它不会像C语言自动补尾0一样补'$',不能直接输出。
4CH:返回
MOV AX,4C00H
INT 21H
同C语言中的return 0,使返回dos系统