您的位置:首页 > 其它

汇编语言入门:学习简单指令和数据段

2018-02-14 13:16 369 查看
本章围绕 “mov”、”add”、”sub”指令展开讲解,旨在为后续学习更高级的语法和指令做一个好的铺垫 :)

mov指令

已学的
mov
指令的几种形式:


mov 寄存器 立即数


mov 寄存器 寄存器


mov 寄存器 内存单元


mov 内存单元 寄存器


mov 段寄存器 寄存器
(段寄存器是特殊的寄存器)

add指令、sub指令

类比
mov
指令,
add
指令和
sub
指令也都有两个操作对象


add 寄存器 立即数


add 寄存器 寄存器


add 寄存器 内存单元


add 内存单元 寄存器


sub 寄存器 立即数


sub 寄存器 寄存器


sub 寄存器 内存单元


sub 内存单元 寄存器


数据段(温故知新)

对于8086PC机,我们可以根据需要将一组内存单元定义为一个段(可以是代码段、数据段等,前面讲过)

可以将一组长度为N(N≤64)、地址连续、起始地址为16倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段

比如用123B0H~123B9H这段空间来存放数据:

段地址:123BH

长度:10字节(偏移地址从0开始数)

比如,现将123B0H~123BAH的内存单元定义为数据段;要累加这个数据段的前三个单元的数据,代码如下:

mov AX, 123BH
mov BX, AX
; mov AL, 0 #初始化al,用于存放数据
; add AL[0] #存放第一个数据——以上两步骤可以用下面一步代替
mov AL, [0] #[0]内存的数据覆盖al的原始数据,al中保存第一个单元的值
add AL, [1]
add AL, [2]


上面因为寄存器AL默认存储8位数据,所以用于累加前三个字节的数据;如果要累加前三个字型数据,把上面AL换成AX每次偏移地址加2(而非1,因为一个字型数据占两个字节,所以偏移地址分别为0、2、4)即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息