DOS功能调用(汇编语言)

DOS的功能调用(汇编语言实验)

  • DOS操作系统的系统函数(功能)以中断服务程序形式提供,采用软件中断进行功能调用,使用寄存器传递参数
  • 基本输入输出系统ROM-BIO,操作系统DOS和LINUX采用中断调用方式提供系统功能

DOS系统调用一般有如下4个步骤:

  1. 在AH寄存器中设置系统功能调用号
  2. 在指定寄存器中设置入口参数
  3. 用中断调用指令(INT 21H)执行功能调用
  4. 根据出口参数分析功能调用执行情况

DOS基本功能调用(INT 21H)

AH=01H,功能:输入一个字符,AL=输入字符的ASCII码;
AH=02H,功能:输出一个字符,DL=字符的ASCII码
AH=09H,功能:输出一个字符串,DX=字符串地址($结尾)
AH=4CH,功能:程序执行结束,AL=返回代码

例:这是其中AH=09H的功能.

;class001.asm in DOS
	;程序的存储模型(Memory Model)
	.model small															;程序的存储模型
	;存储模型决定一个程序的规模,
	;也确定进行子程序调用,指令转移和数据访问的缺省属性
	;须有存储模型语句,且位于简化段定义之前
	;.MODEL	存储模型,语言类型
	;创建运行于DOS操作系统下的应用程序
	;根据需要选择前6种模型
	;一般小型程序选用SMALL模型
	
	;逻辑段的简化定义
	;堆栈段定义伪指令.STACK创建一个堆栈段
	.stack																			;定义堆栈段(默认1KB)
	;默认是1KB空间
	;堆栈段名是:STACK,用@STACK预定义操作符
	;数据段定义伪指令.DATA,用@DATA预定义操作符
	.data																			;定义数据段
	;数据段名是:_DATA,用@DATA预定义操作符
	;数据定义(数据待填)
	
msg1 db 'Hello,Assembly!',13,10,'$'			;定义要显示的字符串
	
	;代码段定义伪指令.CODE创建一个代码段
	.code																			;定义代码段
	;代码段名是:_TEXT,用@CODE预定义操作符
	.startup																		;程序执行起始
	;指明本程序开始执行的位置
	;使DS等于用.DATA伪指令定义的数据段基地址
	;MASM汇编程序
	;根据程序的起始位置设置代码段的CS(代码段寄存器)和IP(指令指针);根据堆栈大小设置堆栈段的SS(堆栈段寄存器)和SP(堆栈指针);但没有设置DS(数据段寄存器)和ES(附加段寄存器),以及FS(附加段寄存器)和GS(附加段寄存器);主程序(指令待填)
	
	mov dx,offset msg1			;指定字符串偏移地址
	mov ah,9									;AH赋值9
	int 21h										;功能调用显示信息
	
	.exit																			;程序正常执行结束
	;子程序(指令待填)
	
	end																				;汇编结束
	
	
	
	
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值