汇编语言中ptr含义和作用.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言中ptr含义和作用

汇编语言中PTR的含义及作用 ptr -- pointer (指针)缩写。 汇编里面 ptr 是规定 的 字 (保留字)。 mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,不用word mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出! 所以,当两个操作数的宽度不一样时,就要用到ptr。 (可以理解为,ptr是临时的类型转换,相当于C语言中的强制类型转换) 也就是说 *p 用汇编表示就是:dword ptr [p] *p是取p所指内存地址处的值。 (1)通过寄存器名指明要处理的数据的尺寸。(既有寄存器,可以不用ptr来限制了,系统会自动分析的) 例如: 下面的指令中,寄存器指明了指令进行的是字操作: mov ax,1 mov bx,ds:[0] 这个的意思是段内的偏移地址是0,段地址是DS。详情请看本人其他日记 mov ds,ax mov ds:[0],ax inc ax add ax,1000 下面的指令中,寄存器指明了指令进行的是字节操作(因为是al): mov al,1 mov al,bl mov al,ds:[0] mov ds:[0],al inc al add al,100 (2)在没有寄存器名存在的情况下,既都是在内存,得用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为byte,word或者DWORD。要不然内存是片连续的区域,操作就乱了。 例如: 下面的指令中,用word ptr 指明了指令访问的内存单元是一个字单元: mov word ptr ds:[0],1 inc word ptr [bx] inc word ptr ds:[0] add word ptr [bx],2 下面的指令中,用byte ptr 指明了指令访问的内存单元是一个字节单元: mov byte ptr ds:[0],1 inc byte ptr [bx] inc byte ptr ds:[0] add byte ptr [bx],2 在没有寄存器参与的内存单元访问指令中,用word prt 或byte ptr 显性地指明所要访问的内存单元的长度是很必要的。否则,CPU无法得知所要访问的单元,还是字节单元。假如我们用Debug查看内存的结果如下: 2000:1000 FF FF FF FF FF FF ...... 那么指令: mov ax,2000H mov ds,ax mov byte ptr [1000H],1 将使内存中的内容变为: 2000: 1000 01 FF FF FF FF FF ...... 而指令: mov ax,2000H mov ds,ax mov word ptr [1000H],1 将使内存中的内容变为: 2000:1000 01 00 FF FF FF FF ...... 这是因为 mov byte ptr [1000H],1访问的是地址为 ds:1000H 的字节单元,修改的是ds:1000H 单元的内容;而mov word ptr [1000H],1 访问的是地址为 ds:1000H 的字单元,修改的是 ds:1000H 和 ds:1001H 两个单元的内容。 (3) 其他方法 有些指令默认了访问的是字单元还是字节单元,比如:push [1000H] 就不用指明访问的是字单元还是字节单元,因为push指令只进行字操作。 补充: ptr也可以是是临时的类型转换, cmp word ptr[si],# 是用si所指向的内存的连续两个字节与#比较 要是改成 cmp byte ptr[si],# 那就是用si指向的那个存储单元的内容(一个字节)与#比较了 jmp near ptr opd 是无条件转移指令,转移到段内的标号opd所标识的位置(临时说明成近类型) 若是 jmp far ptr opd 那就是转移到另外一个代码段的opd所标识的位置了(远类型) 总结: 不管用在什么位置,ptr的作用就是临时指定类型 可以放在ptr前面的类型有byte(字节)、word(字)、dword(双字)、qword(四字)、tbyte(十字节)、far(远类型)和near(近类型)

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档