您的位置:首页 > 其它

汇编语言学习笔记3(王爽)

2017-11-18 12:42 423 查看

内存字的储存

一个字=两个字节,即一个字需要两个内存单元储存。高地址放高位字节,低地址放低位字节。8086CPU为16位结构,有16位数据线,一次性可传输16位数据,也就是说对内存一次性操作两内存单元即为一个字。

DS寄存器

DS寄存器通常用来存放CPU要访问数据的段地址,[...](eg:[0])表示内存单元的偏移地址。
mov bx,1000H

mov ds,bx

mov al, [0]

上面的3 条指令将1000:0中的数据读到al 中。

注意:8086CPU不支持将数据直接送入寄存器。

SS、SP寄存器

CPU栈机制:一段以栈方式访问的内存单元(先进后出),在任意时刻SS:SP指向栈顶元素。SS:SP指向的元素是在栈中的(用来判断空栈SP值)!
入栈和出栈指令:push ax (SP=SP-2,将ax中数据送入栈中) pop ax(出栈一次送入ax中,SP=SP+2)push和pop等栈操作指令修改的只是SP,所以栈顶变化范围最大是0~FFFFH



小问题:
(1) 将 10000H-10000FH 这段空间当作栈, 初始状态栈是空的;

(2)设置 AX=001AH, BX=001BH;

(3)将 AX、 BX中的数据入栈;

写下汇编指令画出内存状态图
注意一下内存图:涉及要点一次操作一个字,高位和低位摆放,先进后出原则

实验

相关指令:-d 段寄存器:偏移地址来查看内存、如-d ds:0、-d cs:0。

一个简单的汇编程序:
assume cs:codesg

codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H

codesg ends

end

汇编源程序包涵两种指令:汇编指令、伪指令。汇编指令是有对应的机器码的指令, 可以被编译为机器指令, 最终为CPU所执行。 而伪指令没有对 应的机器指令,最终不被CPU所执行。  伪指令是由编译器来执行。
一:1、xxxx segment 2、 xxxx ends(定义一个段名字为xxxx、从1开始从2结束)
二:end汇编结束标志
三:assume 将特定用途段与相关联段寄存器关联
以上是伪指令
mov ax,4c00H

int 21H

这两段是程序返回指令
编译:masm、连接:link
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息