编辑: 哎呦为公主坟 2019-07-18

在当前显示器光标位置显示一个问号mov ah,02h;

设置功能号:ah←02hmov dl,'?';

提供入口参数:dl←'?'int 21h;

DOS功能调用:显示 字符串输出的功能调用 DOS功能调用INT 21H功能号:AH=09H入口参数:DS:DX=欲显示字符串在主存中的首地址字符串应以$(24H)结束功能:在显示器输出指定的字符串可以输出回车(0DH)和换行(0AH)字符产生回车和换行的作用 字符串输出的功能调用―显示字符串(例) str db 'Hello,Everybody !',0dh,0ah,'$';

在数据段定义要显示的字符串...mov ah,09h;

设置功能号:ah←09hmov dx,offset str;

提供入口参数:dx←字符串的偏移地址int 21h;

DOS功能调用:显示 字符输入的功能调用 DOS功能调用INT 21H功能号:AH=01H出口参数:AL=字符的ASCII码功能:获得按键的ASCII代码值调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值 字符输入的功能调用―判断按键(例) getkey:mov ah,01h;

功能号:ah←01hint 21h;

功能调用cmp al,'Y';

处理出口参数alje yeskey;

是"Y"cmp al,'N'je nokey;

是"N"jne getkey...yeskey:...nokey:... 字符串输入的功能调用 DOS功能调用INT 21H功能号:AH=0AH入口参数:DS:DX=缓冲区首地址执行该功能调用时,用户按键,最后用回车确认本调用可执行全部标准键盘编辑命令;

用户按回车键结束输入,如按Ctrl+Break或Ctrl+C则中止 关键要定义好缓冲区 字符串输入的功能调用―缓冲区的定义 第1字节事先填入最多欲接收的字符个数(包括回车字符,可以是1~255)第2字节将存放实际输入的字符个数(不包括回车符)第3字节开始将存放输入的字符串实际输入的字符数多于定义数时,多出的字符丢掉,且响铃接收的字符串最后一个总是回车符 字符串输入的功能调用―输入字符串(例) ;

定义缓冲区Bufdb

81 ;

第1个字节填入可能输入的最大字符数db 0;

存放实际输入的字符数db

81 dup(0);

存放输入的字符串...mov dx,seg buf;

伪指令seg取得buffer的段地址mov ds,dx;

设置数据段DSmov dx,offset buffermov ah,0ahint 21h 补充:程序如何返回DOS 第一种 push ds sub ax,ax push ax … ret 补充:程序如何返回DOS DOS执行文件通常有代码段,数据段,堆栈段,有些还有附加段,当DOS可执行被装入到内存的时候,DOS会在可执行程序的前面加上一个256字节的数据结构,这个结构成为PSP(Program Segment Prefix, 程序段前缀控制块.该块的结构如下: 00H

1 WORD 指令 INT 20H 返回到DOS02H

1 WORD 程序分配块的底部 04H

1 BYTE 保留 05H

5 BYTE CALL功能调用入口 0AH

2 WORD INT 22H结束地址 0EH

2 WORD INT 23H CTRL-BREAK处理程序地址 12H

2 WORD INT 24H 标准错误处理程序地址 16H

1 WORD 父进程PSP 18H

20 BYTE 句柄表 2CH

1 WORD 环境块地址 2EH

2 WORD 保留 32H

1 WORD 句柄表大小 34H

2 WORD 句柄表地址 38H

24 BYTE 保留 50H

1 WORD INT 21H DOS 调用 52H

1 BYTE FAR RET 53H

9 BYTE 保留 5CH

16 BYTE 为未打开的FCB1使用 6CH

20 BYTE 为未打开的FCB2使用 80H

1 BYTE 命令行参数的长度 81H

127 BYTE 命令行参数 程序真正的代码就紧接在该PSP之后,既从100H开始.程序调入后,CS和SS会自动指到代码段和堆栈段.但DS和ES并不指向数据段和附加段,而是指向PSP段地址 RET所执行的操作:IP

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题