dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345678中的双字型(32位)数据赋给eax
对于这个问题,
汇编
语言中用一下方法处理。
(1)通过寄存器名指明要处理的数据的尺寸。例如:下面的指令中,寄存器指明了指令进行的是字操作:mov ax,1mov bx,ds:[0]mov ds,axmov ds:[0],axinc axadd ax,1000
下面的指令中,寄存器指明了指令进行的是字节操作:mov al,1mov al,blmov al,ds:[0]mov ds:[0],alinc aladd al,100
(2)在没有寄存器名存在的情况下,用操作符 X
ptr
指明内存单元的长度,X在
汇编
指令中可以为
word
或byte。例如:下面的指令中,用
word
ptr
指明了指令访问的
8086CPU的指令,可以处理两种尺寸的数据,byte和
word
。所以在机器指令中要指明,指令进行的是字操作还是字节操作。对于这个问题,
汇编
语言中用一下方法处理。
(1)通过寄存器名指明要处理的数据的尺寸。
下面的指令中,寄存器指明了指令进行的是字操作:
mov ax,1
mov bx,ds:[0]
mov ds,ax
mov ds:[0],ax
inc ax
add...
首先了解内存,内存就是一排房间,编号从0开始,0,1,2,3,4,5......
房间里面一定要住人,新人住进去了,原来的人就走了;不管你住不住,里面都有人、
编号就是地址、里面的人就是内容,为了我们(人)记着方便,我们给他们起些名字,如张三、李四、于是,
变量,就是一个房间,它有编号(地址),他有名字(
变量名
),他有内容(里面的人)、
inta=3;/...
易语言
汇编
替换字节集源码。mov eax, d
word
ptr
[ebp+08h]。mov eax, d
word
ptr
[eax] 取出ebp+08h地址(eax值加8后才是真实地址)。add eax, 07h eax的值为: ebp+08h真实地址减去1(+08H是真实地址,此时+07H),少1是修正后边加替换位置超出的1字节。add eax, d
word
ptr
[ebp+0Ch] ebp+0Ch结合ebp+08h确定替换位置,并存放到通用寄存器eax。mov edi, eax eax作为内存指针存放于寄存器edi。------------------------------------------------------------------------------------------------------------------------------------------。mov eax, d
word
pt
易语言
汇编
替换字节集源码
mov eax, d
word
ptr
[ebp+08h]
mov eax, d
word
ptr
[eax] 取出ebp+08h地址(eax值加8后才是真实地址)
add eax, 07h eax的值为: ebp+08h真实地址减去1(+08H是真实地址,此时+07H),少1是修正后边加替换位置超出的1字节
add eax, d
word
ptr
[ebp+0Ch] ebp+0Ch结合ebp+08h确定替换位置,并存放到通用寄存器eax
mov edi, eax eax作为内存指针存放于寄存器edi
------------------------------------------------------------------------------------------------------------------------------------------
mov eax, d
word
ptr
[ebp+10h] 计算ebp+10h字节集指针
mov eax, d
word
ptr
[eax] 计算ebp+10h字节集指针
add eax, 08h 计算ebp+10h字节集指针
mov esi, eax ebp+10h字节集指针存放于esi
------------------------------------------------------------------------------------------------------------------------------------------
mov ecx, d
word
ptr
[ebp+10h] 计算ebp+10h字节集长度
mov ecx, d
word
ptr
[ecx] 计算ebp+10h字节集长度
mov ecx, d
word
ptr
[ecx+04h] ebp+10h字节集长度值存放到计数存储器ecx
rep movsb 重复操作,重复次数为ecx值,也就是用作替换的字节集长度值
mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是
word
型,所以没有必要加“
WORD
”
mov ax,
word
ptr
[bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是
word
,所以需要用
word
明确指出!
所以,当两个操作数的宽度不一样时,
var_6=d
word
ptr
-6:
ptr
-6表示指针上移6个单位处,这里的单位是指计算机的寻址单位,一般按字节寻址,[EBP+var_6]就表示EBP-6个字节的地址处。
D
WORD
表示双字,是对存入数据的说明。双字=4字节,也就是8位16进制,也就...
PUSH BX
CALL SHOWBYTE ;调用 SHOWBYTE,显示小时 (转换成ASC码输出)
CALL SHOWCOLON ;调用 SHOWCOLON 显示:
POP BX
XCHG BH,BL ;数据交换
CALL SHOWBYTE ; 显示分钟 (转换成ASC码输出)
CALL SHOWCOLON ; 显示 :
POP BX
CALL SHOWBYTE ;显示秒
MOV DX,CS:OLDCUR ;保存原来光标位置
MOV AH,2 ;恢复原光标位置
XOR BH,BH
INT 10H
POP DX
POP CX
POP BX
POP AX
SHOWBYTE PROC NEAR