不知道你对C语言熟悉不熟悉。
可以用C语言中的一个技术点来作比较:
C里定义一个char 类型的数组
char a[] = {1,2,3,4,5};
如果这样使用 short b = *((short*)a);
这样,就把char数组前面2个字符1,2转换为短整形数据:b=513; 0x201;
汇编里ptr 和这个功能类似,
数据区字义
a db 1,2,3,4,5,6,7
当使用数据时,
mov ax, word ptr a
则会把a中的前2个byte,当作一个数据读取到ax中,word指明了,把数据区
变量a当作word类型来处理,同理:
定义 dw a 0102H
move al, byte ptr a,则会只处理一个byte.
ptr 提供了一种让你在不同类型数据之间,自由变换的方法。
data segment dword 'data'
arr db 100 dup(?)
data ends
stack segment para stack
dw 200 dup(?)
top dw $
stack ends
code segment word 'code'
assume cs:code,ss:stack,ds:data,es:data
org 100h
start:mov ax,seg stack
mov ss,ax
mov sp,top
mov ax,seg data
mov ds,ax
mov es,ax
mov cx,100
mov di,0
mov al,64h
cld
rep stosb
mov ah,4ch
int 21h
code ends
end start
它是一种面向对象的脚本语言,与 Smalltalk 非常接近,但增加了数组编程的特性。