DOS中断

更新时间:2023-03-15 17:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.mov ah,01h int 21h

功能:输入字符并回显 AL=键入字符的ASCII码

2.mov ah,02h int 21h

功能:显示DL寄存器中的ASCII码对应的字符 DL=要显示字符的ASCII码

3.mov ah,09h int 21h

功能:在屏幕显示以‘$’字符为结束的字符串 DS:DX指向字符串首地址的段地址和偏移量 Data segment

ring db ‘the lord of the ring$’ Data ends Code segment

Assume cs:code,ds:data Start: mov ax,data Mov ds,ax Lea dx,ring Mov ah,09h Int 21h Mov ah,4ch Int 21h Code ends End start

生成exe可执行文件

运行ring程序,输出字符串the lord of the ring

4.mov ah,0Ah

功能:程序运行后,在屏幕上接收键盘输入的字符串,然后存如某个指定的内存单元里 Data segment

Buf db 11 ;这里的20为指定存放字符的个数(理论上的) Db ? ;可变,实际存放字符的个数(系统自动计算) Db 11 dup(?) ;这里的20是你在数据段开辟的空间 Data ends Code segment

Assume cs:code,ds:data Start: mov ax,data Mov ds,ax Lea dx,buf Mov ah,0ah Int 21h Mov ah,4ch Int 21h Code ends End start

注意键盘缓冲区如何使用,以及其中每一个字节的含义 通过宏汇编编译

最终产生pp0a.exe 运行pp0a.exe

不难发现最多只能输入10个5(因为键盘缓冲区设定只能输入11个,最后一个安排给了回车键,故最多只能输入10个)

按回车后,无反应(因为没有输出啊),但内存单元里的内容是改了的,可以用debug来看运行后的内存变化,

反汇编

查看ds寄存器

buf 的显示是0B表示指定存放字符的个数 buf+1的显示是0A表示实际输入的个数是10个

本文来源:https://www.bwwdw.com/article/7l6v.html

Top