1.汇编中的word ptr里的ptr是什么意思
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,因为机器的特殊性造成了代码兼容性差的缺陷。
参考资料来源:百度百科-汇编语言
2.汇编 fistp qword
fistp是一条FPU浮点指令,作用是将st(0)中的浮点数以整数的形式存放到操作数指向的内存中,并在寄存器栈中弹出一个数据.st(0)是FPU中的寄存器
我收集的关于浮点运算的资料:
/self.aspx/TEMP/Float.rar
(这个东西我都在百度知道用好几次了- -)
这个是Intel的软件开发者参考,非常权威:
/products/processor/manuals/index.htm
Instruction Set Reference里面有指令的介绍
3.问个很菜鸟的问题 刚接触汇编 JMP NEAR PTR OPD 中的PTR是什么
ptr是临时的类型转换,相当于C语言中的强制类型转换
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(近类型)
4.MOV EAX,DWORD PTR SS:[EBP
只是默认情况下CS DS SS的开始地址一样而已,没听说过抛弃SS。
x86环境访问栈就得用SS,这不是Windows一个软件能说了算的。dword ptr表示内存操作数是4个字节(Double-WORD PoinTeR,双字指针),还有word ptr表示2字节,byte ptr表示一字节,qword ptr表示8字节。
一般只有目标是内存源是即时数的时候才需要明确写出来:mov dword ptr [eax], 0因为不写的话根本判断不出来要写几个字节,编译器默认会处理成byte ptr。
转载请注明出处51数据库 » 汇编qwordptr