一周干掉汇编语言 #Day2 #第一个程序 #[BX]和loop #包含多个段的程序

本文介绍了汇编语言的学习进程,包括编写第一个程序、理解[BX]和loop指令的用法,以及如何处理包含多个段的程序。详细探讨了程序结构、程序返回、错误处理,以及在Debug中单步执行程序的技巧。文章还深入讲解了汇编指令到可执行文件的转换过程,强调了程序错误的分类和处理,以及DOS系统的程序运行机制。
摘要由CSDN通过智能技术生成


基础不会,啥都白费;基础不牢,地动山摇。
汇编在基础中的地位举足轻重,学习汇编,可以帮助我们从CPU角度出发,理解程序,写出更好的 高级语言 程序。可以帮助我们理解程序的运行机制,知道原理,解决一些隐蔽的BUG。
学习步骤: 看视频,看书,做笔记,理解为主。习题独立完成,全对,才能进入下一章的学习。
视频: 小甲鱼
教材: 《汇编语言(王爽)》(三版)
日期: 2020-07-01

进度:31/77

四、第一个程序:22/77

编写
编译连接
执行
  1. 编写源程序文件
  2. 编译链接可执行文件
  3. 执行可执行文件中的程序

可执行文件:

  1. 程序(汇编指令翻译成的机器码) + 数据(源程序中定义的数据)
  2. 描述信息(如,程序有多大、要占用多少内存空间)

1. 源程序结构

源程序: 源程序文件中的所有程序,皆称为源程序
程序: 源程序中最终 由计算机执行,处理的指令或数据。


汇编源程序由伪指令汇编指令 构成


汇编指令: 用来翻译成机器码
伪指令: 给编译器执行的,让编译器执行相关编译工作。
在这里插入图片描述

;在汇编中表示注释


  • 段名 segment段名 ends是一对,定义一个段,这个段用来存放代码。(ends后面的s表示的是segment而不是复数的意思)

标号: XXX segment里的XXX就是标号。它是一个段的名称 ,最终会被编译,连接成为一个段的段地址(就类似C中的指针)

  • end用来标识程序的结束
  • assume假设寄存器和程序中的某一个XXX segment ... XXX ends段相关联,很像给寄存器取别名

注意: 至少要有一个段(代码段)


下图展示了汇编指令可执行文件 的过程
在这里插入图片描述

2. 程序返回

DOS是一个单任务系统:

  • 一个程序p2想要运行,必须得有一个正在运行的p1,把它从可执行文件加载入内存,并将CPU的控制权交给p2,p2才能运行。
  • p2运行时,p1暂停运行。p2运行完毕,p1继续运行。

比如仿DOS程序CMD,执行p2.exe时,CMD.exe停止执行。等到p2.exe执行完毕后,CMD.exe再次执行。

一个程序结束,然后返回调用的程序的行为,叫做程序的返回 ret


要让程序返回,需要以下两行代码
在这里插入图片描述
int 21H是中断的意思,中断机制是DOS的发明。在Win中,变成了消息机制,从而单任务系统变为多任务系统。

注意: 上面两行代码是固定的,原理后面再讲。

3. 程序错误

程序错误分为:语法错误逻辑错误

  • 语法错误: 编译器报错
  • 逻辑错误: 运行报错

很类似JAVA中的运行期异常编译期异常 。但是 错误异常 一定要区分开来。错误是不可避免的,异常是可以避免的。所以,语法错误叫成 语法异常 更准确。逻辑错误,可能是由于代码不规范,那就应该列为 逻辑异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值