汇编语言-DOS环境汇编

1.DOS编程

DOS介绍

DOS环境是一个简单的16位操作系统平台
   ▶设计运行于8086和8088处理器
   ▶也可运行于IA-32处理器的实地址工作方式
32位Windows操作系统模拟有一个MS-DOS环境
   ▶基于Windows保护方式的一个8086仿真环境

DOS特点

DOS是单用户单任务操作系统
DOS系统只有一个特权级别
应用程序可以访问任意资源
   ▶使用IO指令直接对外设端口操作
   ▶修改任何主存数据
   ▶.......

DOS编程的注意事项

16位DOS环境默认采用16位操作数尺寸
   ▶主要使用16位或8位寄存器、操作数和寻址方式
   ▶堆栈以16位为单位压入PUSH和弹出POP数据
IA-32处理器的实地址工作方式
   ▶还允许使用32位寄存器、操作数和寻址方式
   ▶可以使用大多数新增的32位通用指令

实地址存储模型

主存空间1MB( =2^20 B) : 00000H一FFFFFH
程序设计时分段管理,但有两个限制:
   ▶每个段最大为64KB
   ▶段只能开始于低4位地址全为0的物理地址处

逻辑地址和物理地址

逻辑地址=段地址∶偏移地址
   ▶16位段寄存器保存20位段起始地址的高16位
   ▶偏移地址也用16位数据表示
物理地址=段地址×16+偏移地址

16位存储器寻址方式
基址寄存器+变址寄存器+位移量

多种主存寻址方式

mov ax,wvar      ;直接寻址
mov ax,[bx]      ;寄存器间接寻址
mov ax,[bp+4]    ;寄存器相对寻址
mov ax,[bx+si]   ;基址变址寻址
mov ax,[bx+di-2] ;相对基址变址寻址

2.DOS应用程序

16位DOS环境的源程序框架

       include io16.inc ;包含16位输入输出文件
       .data        ;定义数据段
       ...          ;数据定义(数据待填)
       .code        ;定义代码段
start: mov ax,@data ;程序执行起始位置
       mov ds,ax   
       ...          ;主程序(指令待填)
       exit 0       ;程序正常执行终止
       ...          ;子程序(指令待填)
       end start    ;汇编结束

io16.inc

DOS应用程序的包含文件
   ▶提供基本声明等语句
   ▶用于封装源程序文件的细节内容
需要配合16位IO库文件IO16.LIB
   ▶共同保存于当前目录

设置数据段寄存器

DOS分段管理程序
汇编和连接程序设置了CS:IP和SS:SP
DS和ES需要用户程序设置
       mov ax,@data 
       mov ds,ax 

DOS应用程序的快速开发过程
在这里插入图片描述

3.DOS系统调用

DOS系统调用步骤

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

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

在这里插入图片描述
退出DOS

mov ax,4c00h
int 21h
调用DOS 4CH号功能,实现执行结束退出

指令调用

DOS功能使用“INT N”指令调用
中断调用方法还应用于
   ▶基本输入输出系统ROM-BIOS
   ▶Linux系统功能
mov ah,子功能号
int 21h 

4.输入输出编程

输入指令(IN)

数据从I/0接口(外设)输入到处理器
IN ALIAX/EAX,i8/DX
例如: in al,21h
      in al,dx

输出指令(OUT)

数据从处理器输出到I/0接口(外设)
OUT i8/DX,ALIAX/EAX
例如: out 21h,al
      out dx,al

I/O直接寻址

I/0指令中直接提供I/0地址
   ▶IA-32处理器只能直接提供8位I/0地址
   ▶只能寻址最低256个I/0地址(00~FFH)>用i8表示I/0地址
   ▶表达形式与立即数一样
IN ALIAX/EAX,i8/DX
OUT i8/DX,AL/AX/EAX

I/O间接寻址

I/0指令中通过寄存器间接提供I/0地址
   ▶IA-32处理器用DX寄存器保存访问的I/0地址     
   ▶可寻址全部I/0地址(0000~一FFFFH)
直接书写成DX,表示I/0地址
   ▶不需要用中括号
IN ALIAX/EAX,i8/DX
OUT i8/DX,ALIAX/EAX

CMOS RAM

CMOS RAM是使用CMOS技术的存储器芯片
   ▶PC机用以保存配置信息以及实时时钟断点后由 
   ▶后备电池供电,避免信息丢失>具有64个字节存储容量
   ▶通过两个I/O地址访问

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DbillionBUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值