汇编语言个人总结篇(第三章)

写下这篇博客主要是为了以后复习的时候更方便。书籍:汇编语言王爽第四版

第三章从访问内存的角度学习寄存器。字单元存放一个字型数据,由两个连续的内存单元构成。N地址字单元由N和N+1两个内存单元组成(注意高低位字节存放的位置)。

使用ds寄存器来存放要访问数据的段地址(8086CPU不支持数据直接送入段寄存器,需要先用一个通用寄存器来存放数据,再使用mov指令操作两个寄存器间数据的传送)。8086CPU有16根数据总线,可以一次传输一个字。使用ds寄存器存放数据段的段地址,即可自定义一个数据段,但要注意大小不得超过64KB(8086机,因为CPU只有16根数据总线)。

栈是一种使用后进先出访问方式的存储空间(LIFO)。8086CPU提供PUSH 寄存器(入栈)、POP 寄存器(出栈)指令操作。使用SS、SP两个寄存器来存放栈顶的地址,任何时刻SS:SP指向栈顶元素。push时sp = sp - 2(从最下方的内存单元开始),pop时sp = sp + 2。注意栈顶越界问题,另外出栈的时候并非真正的删除操作,而是两个寄存器不指向该字单元,再次push时新的数据会将其覆盖。最开始栈空时SS:SP(即栈顶)指向栈空间的下一个内存单元。push、pop指令可以在寄存器和内存间传送数据。

Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧跟着被执行。另外T指令为单步中断,CPU会保护现场,即按顺序把标志寄存器、CS、IP入栈。-

补充一下第二章Debug程序的部分操作,方便以后实验用。

-r 用来查看、寄存器内容(也显示机器码及其对应的汇编指令);

-r 寄存器名 用来改变寄存器内容;

-d 段地址:偏移地址 用来查看内存中的内容(128个存储单元,一行16个字节,共8行);

-d 段地址:偏移地址 结尾偏移地址 用来查看从开始地址到结尾地址内存中的内容;

-e 改写内存中的内容;

-u 段地址:偏移地址 用来查看内存单元对应的汇编指令;

-t 执行一条或多条指令(CS:IP);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值