汇编:汇编指令分类

文章目录

  • 一、指令分类
  • 二、伪指令
    • 1、assume
    • 2、segment、ends
    • 3、end
  • 三、汇编指令
    • 1、退出程序指令
    • 2、中断
      • 2.1、概念
      • 2.2、中断的分类
      • 2.3、本质
      • 2.4、中断指令
    • 3、call、ret
  • 四、指令处理的数据长度

使用汇编语言编写一个完整的程序,步骤大致如下:

1、编写源代码,文件名拓展名为.asm
2、编译、链接(可以使用微软的MASM编译器)
3、调试、运行
汇编:汇编指令分类_第1张图片

这节我们来看下一个最简单的汇编代码包含哪些内容。下面是一段简单的汇编语言的代码:

assume cs:code

code segment
	mov ax,1122h
	mov bx,3344h
	add ax,bx
	
	mov ah,4ch
	int 21h
code ends

end

从上面的代码可以看出,汇编语言由两类指令组成:

1、汇编指令
2、伪指令

一、指令分类

1、汇编指令

如mov、add、sub等
有对应的机器指令,可以被编译为机器指令,最终被CPU执行

2、伪指令

如assume、 segment、ends、end等
没有对应的机器指令,由编译器解析,最终不被CPU执行

汇编注释,以分号开头,如下代码:

-------- 数据段 --------
data segment
	string db 'Hello World!$'
data ends

二、伪指令

这里取几个常用的来说明

1、assume

声明code段是代码段(cs段)。给程序员看的,也可以不声明。

2、segment、ends

其作用是定义一个段,segment代表一个段的开始,ends代表一个段的结束,使用格式为:

段名 segment
 	...
 	...
段名 ends

一个有意义的汇编程序中,至少要有一个段作为代码段存放代码

3、end

编译器遇到end时,就结束对源程序的编译。

三、汇编指令

这里介绍几个常见汇编指令。

1、退出程序指令

实现一:

mov ah,4ch
int 21h

实现二:

mov ax, 4c00h
int 21h

2、中断

2.1、概念

中断是由于软件的或硬件的信号,使得CPU暂停当前的任务,转而去执行另一段子程序。
也就是说,在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止当前程序的执行转而处理这个新情况的过程就叫做中断。

2.2、中断的分类

1、硬中断(外中断):由外部设备(比如网卡、硬盘)随机引发的,比如当网卡收到数据包的时候,就会发出一个中断
2、软中断(内中断):由执行中断指令产生的,可以通过程序控制触发

2.3、本质

从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的入口点,进行中断处理。
汇编:汇编指令分类_第2张图片

2.4、中断指令

可以通过指令int n产生中断
n是中断码,内存中有一张中断向量表,用来存放中断码对应中断处理程序的入口地址。
CPU在接收到中断信号后,暂停当前正在执行的程序,跳转到中断码对应的中断向量表地址处,去执行中断处理程序。

常见中断:

int 10h:用于执行BIOS中断。
int 3:是“断点中断”,用于调试程序
int 21h:用于执行DOS系统功能调用,AH寄存器存储功能号
更多的中断指令,点击这里下载。

3、call、ret

call和ret联合使用的作用其实就是高级语言中的函数调用

1、call 标号:

1、将下一条指令的偏移地址入栈
2、转到标号处执行指令

2、ret 标号:将栈顶的值出栈,赋值给ip。

在使用的时候,考虑点比较多,主要有以下几个方面:

有无参数
有无返回值
现场保护
局部变量
堆栈平衡

四、指令处理的数据长度

1、8086指令能处理2种尺寸的数据:byte、word

2、mov [0], 20H指令是否正确?

1、mov byte ptr [0], 20H 将20H放入0位置内存的字节单元,占用1个字节
2、mov word ptr [0], 20H 将20H放入0位置内存的字单元,占用2个字节
3、很多指令都可以通过byte ptr或者word ptr来指明所需要操作内存的数据长度。

3、有些指令有默认的操作数据长度,比如push [0]、pop [0]的操作数据长度只能是2个字节。

你可能感兴趣的:(汇编语言,汇编指令分类)