ptr -- pointer (指针)缩写。
汇编里面 ptr 是规定的字 (保留字)。
mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,不用wordmov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。
由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出!
扩展资料;
优点
汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:
1,可以轻松的读取存储器状态以及硬件I/O接口情况。
2,编写的代码因为少了很多编译的环节,可以能够准备的被执行。
3,作为一种低级语言,可扩展性很高 。
缺点
1,因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长以及编写的困难
2,因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易
3,就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4,因为机器的特殊性造成了代码兼容性差的缺陷。
参考资料来源:百度百科-汇编语言
mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出! ptr是显示申明(还是声明?)
所以,当两个操作数的宽度不一样时,就要用到,
这里的宽度是指bit说简单点就是 16位的还是8位的!
cpu内部的寄存器,是16位的,(老了吧?)
而内存的单位寻址是8位的,所以他们的宽度不一样
就需要显示声明ptr,
当你用dw和dt、db等时,就需要他来显示声明了,
x86 CPU 可以执行 16 位数的指令,也可以执行 8 位数的指令。
位数,究竟是多少?
在指令中,你如果不写清楚,CPU 就无法干活。
针对寄存器的指令,如:
MOV CX,200、
INC AL
寄存器的位数,就是非常清楚的。
--------
而,针对存储器的指令,如:
MOV [BX],20H。
则有可能是一个字节、或两个字节的传送。。。
位数,不确定,CPU 就无法执行。
--------
那么,这条指令,就必须如下写:
MOV BYTE PTR [BX],20H
MOV WORD PTR [BX],20H
MOV DWORD PTR [BX],20H
分别代表:8 位数、16 位数、32 位数的传送。