微机接口-汇编语言程序设计

格式和伪指令

汇编语言的汇编处理过程

  1. 按语法规则编写源程序PROG.ASM;
  2. 用汇编程序将源程序翻译成目标文件PROG.OBJ;
  3. 用连接程序对1个或几个.OBJ模块连接后,生成能在机器上执行的程序PROG.EXE。
    如果汇编过程中出错,要在纠错后重新汇编;
    连接过程也会出现新的错误,需要反复修改。

伪指令语句

段定义语句

段定义语句SEGMENT和ENDS,用来定义一个逻辑段
Ex:
用段定义语句定义一个数据段, 段名为DATA, 段中包含X、Y两个变量在这里插入图片描述
1. 段定义语句的一般形式:
在这里插入图片描述

加“[ ]”项可省略,但堆栈段的组合类型是STACK,不可省略。
省略项不写时,其值用带“*”的项,它们是隐含用法,用的是默认值。

段分配语句

段分配语句ASSUME告诉汇编程序,4个段寄存器CS、DS、SS、ES分别与哪些段有关。格式如下,也可分两行书写。
ASSUME CS:代码段名,DS:数据段名
ASSUME SS:堆栈段名,ES:附加段名

过程定义语句

将结构和功能相同,仅有一些变量赋予的值不同的程序段独立编写,用过程定义伪指令PROC和ENDP进行定义,并把这些程序段称为过程(Procedure)或子程序,由主程序中的CALL语句来调用它们

变量定义语句

变量定义语句的一般形式为:
变量名 伪指令指示符 操作数 ;注释
变量名用符号表示,也可以省略。
伪指令包括DB、DW、DD、DQ和DT,分别定义字节、字、双字、4字和10字节变量。
操作数可以有具体的字节、字和双字等初值,也可以不指定具体数值,而用一个问号“?”来表示,此时仅为变量留出存储单元

[变量名] DB 表达式[, ……] ;定义字节变量
[变量名] DW 表达式[, ……] ;定义字变量
[变量名] DD 表达式[, ……] ;定义双字变量
[变量名] DQ 表达式[, ……] ;定义四字变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序结束语句

程序结束语句的格式为:
END [标号名或名字]
它位于程序的最后一行,指示源程序结束,遇到END伪指令则停止汇编。
标号名或名字可省略。

完整的汇编语言程序框架

完整的汇编语言程序包含数据段代码段堆栈段附加数据段

其中代码段是必须要有的;
堆栈段根据情况设置;
代码段中要用到变量或数据时,应该设置数据段。当代码段中有字符串操作指令时,不仅要设置数据,还必需设置附加段,而且必须将源串存放在数据段中,而把目的串放在附加段中。

DOS系统功能调用和BIOS中断调用

DOS系统功能调用

中断处理程序分类

  • 8086 CPU可处理256类中断,利用INT n指令,可直接调用256个系统已编写好的中断处理程序。INT n指令中的类型号n=00~FFH;
  • n=00~04H为专用中断,处理除法错、单步、不可屏蔽中断NMI、断点、溢出中断;
  • n=10H~1AH、2FH、31H、33H为BIOS中断,即保存在系统ROM BIOS中的BIOS功能调用。
  • n=20H~2EH为DOS中断,应用DOS提供的功能程序来控制硬件,可对显示器、键盘、打印机、串行通信等字符设备提供输入输出服务。

DOS系统功能调用方法

DOS系统功能调用的步骤:

  1. 功能调用号送到AH寄存器中,AH=00~6CH
  2. 入口参数送到指定的寄存器中,一种功能调用又包含多个子功能,有些调用不带参数
  3. 执行INT 21H指令
  4. 得到出口参数,或将结果显示在CRT上

BIOS中断调用

  • 有些DOS系统功能调用和BIOS中断调用能完成同样的功能。例如,要打印一个字符,可以用INT 21H的5号DOS功能调用,也可用BIOS的INT 17H的0号中断调用。
  • 由于BIOS更接近硬件,使用起来要复杂一些,尽量使用DOS系统功能调用。
  • 有些情况下,必须使用BIOS中断调用。例如,INT 17中断的2号调用为读打印机状态,DOS功能调用无这种功能,只能使用BIOS中断调用。

汇编语言程序设计方法与实例

顺序结构程序设计

如果用循环程序将00~FFH先后送入DL,再利用DOS的2号功能调用,则可显示全部的标准和扩展ASCII码,包括全部控制符以及积分符、希腊字母等

分支程序设计

循环结构程序

代码转换程序

过程调用

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值