- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《汇编语言》学习笔记(清华大学王爽)
清华大学《汇编语言》(王爽)读书笔记
第一章 基础知识汇编语言由3类指令组成汇编指令:机器码的助记符,有对应机器码。伪指令:没有对应机器码,由编译器执行,计算机并不执行其他符号:如+-*/,由编译器识别,没有对应机器码一个CPU有n根地址线,则可以所这个CPU的地址线宽度为n,这样的CPU最多可以寻找2的n次方个内存单元。 1K=2^10B 1M=2^20B 1G=2^30B◎8086 CPU地址总线宽度为20,寻址范围为00000~FFFFF00000~9FFFF 主存储器地址空间(RAM)A0000~BFFFF 显存地址空间C0000~FFFFF 各类ROM地址空间
第二章 寄存器(CPU工作原理)16位结构描述了一个CPU具有下面几个方面的结构特性运算器一次最多可以处理16位的数据寄存器的最大宽度为16位寄存器和运算器之间的通路为16位8086有20位地址总线,可以传送20位地址,达到1M的寻址能力。采用在内部用两个16位地址合成的方法来形成一个20位的物理地址物理地址 = 段地址 × 16 + 偏移地址在编程是可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。段地址×16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址位16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB8086有四个段寄存器 CS、DS、SS、ESCS为代码段寄存器,IP为指令指针寄存器。任意时刻,设CS中内容为M、IP中内容为N,8086CPU从内存M×16+N读取一条指令执行不能用mov修改CS、IP,因为8086CPU没有提供这样功能,可用指令JMP 段地址:偏移地址。JMP 2AE3:3 JMP AX 修改IP
第三章 寄存器(内存访问)DS数据段寄存器。不能将数据直接送入段寄存器,所以『MOV DS, 1』不正确字在存储时要两个连续的内存单元,低位在低地址,高位在高地址[address]表示一个偏移地址为address的内存单元SS:SP指向栈顶元素PUSH AX:(1)SP = SP - 2;(2)AX送入SS:SPPOP AX:(1)SS:SP送入AX;(2)SP = SP + 2PUSH/POP 寄存器PUSH/POP 段寄存器PUSH/POP 内存单元
第四章 第1个程序可执行文件包含两部分:程序和数据,相关的描述信息程序加载后, ds中存放这程序所在内存区的段地址,这个内存区的偏移地址为0,策程序所在的内存区的地址为ds:0;这个内存区的前256个字节中存放的是PSP,dos用来和程序进行通信。从256字节处向后的空间存放的是程序。
第五章 [BX]和loop指令[BX]表示一个内存单元,它的段地址在ds中,偏移地址在bx中。MOV AX,[BX] MOV AL,[BX] MOV [BX],AXloop要进行两步操作,CX=CX-1;判断cx中值,不为零则转至标号处执行程序,为零则向下执行。masm将指令 mov ax,[0] 当作 mov ax,0 处理解决方法可以为 mov bx,0 使用寄存器mov ax,[bx]或 mov ax,ds:[0] 直接给出段地址所在的段寄存器loop中不可使用 mov [cx],cx
第六章 包含多个段的程序dw 定义字型数据end 标号 定义程序入口点定义多个段,同定义代码段相同。定义仅仅是为了程序阅读方便assume cs:code,ds:data,ss:stack是伪指令,将定义的具有一定用途的段和相关的寄存器联系起来对于段,如果数据占N个字节,则程序加载后实际占有空间为:(N/16+1)*16,N的16整数
第七章 更灵活的定位内存地址的方法and 按位与 and al, 0EFhor 按位或 or al, 20h字母大小写转换:大写(xx0x xxxx) and al, 0EFh小写(xx1x xxxx) or al, 20hmov ax,[200+bx] == mov ax,[bx+200] == mov ax,200[bx] == mov ax,[bx].200 段地址为ds,偏移地址为bx+200si和di示8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器来使用一般来说,在需要暂存数据的时候,都应该使用栈
第八章 数据处理的两个基本问题bx,si,di,bp1。在8086CPU中,只有这4个寄存器可以用在[...]中来进行内存单元的寻址正确:mov ax,[bx] | mov ax,[bp]错误:mov ax,[cx] |
文档评论(0)