汇编语言利用堆栈复制内存中的数据

汇编语言利用堆栈复制内存中的数据,第1张

原理上,先修改堆栈的相关寄存器以指向0000:200 或者是0000:20F;

然后从03FF:0~03FF:F取数并一一执行入栈 *** 作即可;

最后记得恢复堆栈的相关寄存器值;

如果是8086系统,修改0段数据,是相当危险的;

当寄存器不够用时,调用方法分两种情况

1、8位地址的RAM调用,读写方法是:

MOVX A,@Ri (i=0,1)

MOVX @Ri,A

例如:

MOV R0,#30H ;准备读写扩展RAM30H的数据

MOVX A,@R0 ;读入30H的数据

CLR A

MOVX @R0,A ;数据写入30H

2、如果是16位地址,读写方法是:

MOVX A,@DPTR

MOVX @DPTR,A

例如:

MOV DPTR,#1000H ;准备读写1000H的数据

MOVX A,@DPTR ;读入1000H的数据

CLR A

MOVX @DPTR,A ;数据写入到10000H

二进制:81 47 24 0F 27

字节集:{129,71,36,15,39,0}

整数型:254035841

add dword ptr [edi+24],270f

在这段代码的地址里写入以上的数据

可以内存写字节集,也可以内存写整数型

运行了第一步 代码是MOV AX,1234,我想用D

----

此时,AX=1234,已经在屏幕,显示出来了。

看你的插图,即可见到。

再敲 D,是看不到 1234 的。

;需要事先在D:盘根目录下建立一个文件TESTTXT

DSEG

SEGMENT

;数据段:在此处添加程序所需的数据

PATHNM1

DB

'D:/TESTTXT'

BUFFER1

DB

100

DUP

()

DSEG

ENDS

CSEG

SEGMENT

assume

cs:CSEG,

ds:DSEG

START:

mov

ax,

dseg

mov

ds,

ax

;打开文件TESTTXT

MOV

AH,3DH

LEA

DX,PATHNM1

MOV

AL,2

INT

21H

;读取文件内容,存入BUFFER1

LEA

DX,BUFFER1

MOV

BX,AX

MOV

CX,100

MOV

AH,3FH

INT

21H

;显示BUFFER1中的内容

MOV

CX,AX

LEA

SI,BUFFER1

NEXT:

MOV

DL,[SI]

MOV

AH,2

INT

21H

INC

SI

LOOP

NEXT

;关闭文件

MOV

AH,3EH

INT

21H

;按任意键退出

mov

ah,1

int

21h

mov

ax,

4c00h

;程序结束,返回到 *** 作系统系统

int

21h

CSEG

ENDS

END

START

以上就是关于汇编语言利用堆栈复制内存中的数据全部的内容,包括:汇编语言利用堆栈复制内存中的数据、汇编寄存器不够用,想调用内存地址,该怎么调、易语言汇编进程内存指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9613153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存