- 博客(7)
- 收藏
- 关注
原创 ds cs探究
assume cs:codestack segmentdb 16 dup (0)stack endscode segmentmov ax,100hmov bx,100hmov cx,100hmov dx,100hmov ah,4chint 21hstart: mov ax,stack mov ss,ax mov sp,16
2015-05-01 09:10:40 517
原创 disi使用
介绍 si ,di 的功能 si , di 和 通用寄存器bx 有着相似的功能 当然,区别是有的 暂时我知道的就是 si, di 这两个与 bx功能相近的寄存器 不可以分解做两个 8 位的寄存器 就是说,只能当做 16 位 的寄存器 使用 assume cs:code,ds:datadata segmentdb 'welcome to masm!'db '
2015-05-01 09:09:05 971
原创 在代码中使用栈
功能:将程序中定义的数据逆序存放要搞清楚一点 .exe 文件加载的过程1.先是找到一段起始地址为 SA:0000 (即起始地址的偏移地址为0 )的容量足够的空闲内存区 SA值 正是放在 DS中的2.然后在这段内存区的前256个字节中,创建一个称为程序段前缀(PSP)的数据区,就是先用256个字节作为 PSP的数据区,这个东西暂时还不清楚是啥? 反正DOS 是要通过PSP来和被
2015-04-05 13:19:32 325
原创 栈实现内存单元内容改写程序中数据
assume cs:codesg功能:栈实现 用内存0:0 -- 0:15 单元中的内容改写程序中的数据assume cs:codesg codesg segmentdw 0123h,0234h,0345h,4h,5h,6h,7h,8hdw 0,0,0,0,0,0,0,0,0,0 ;其实此处我写的和答案不一样 (这个是答案)我感到其奇怪,为什么要开辟这么多的空间呢?
2015-04-05 13:17:33 1019 1
原创 第一条要执行的命令
可执行文件中的程序执行过程1. 由其他的程序(debug、command或者其他的程序)将可执行文件加载入内存2.设置CS:IP 指向程序的第一条要执行的指令(第一条指令就是程序的入口),使程序得意运行 !!就是这里出了问题! 怎样设置 CS:IP 的指向3.程序运行结束后,返回到加载者 就是 返回到 debug 或是 command 程序
2015-04-05 13:16:56 745
原创 复制程序
功能:将这个程序 MOV ax 4c00h 以上的程序部分 复制到 内存0:200 处assume cs:codecode segmentmov ax,code ; 讲解 此处 code可以换成 CS 如果替换 会有差异 就是 MOV AX,CODE 是3个字节而 MOV AX,CS 占2个字节因为 CS 是寄存器 mov ds,ax
2015-04-05 13:15:21 397
原创 向内存中传送数据
功能:想内存 0:200 —— 0:23F 依次传递数据0——63 对应的十六进制就是0——3Fassume cs:codecode segmentmov ax,200hmov ds,axmov bx,0h ;BX 从0 开始mov cx,40hs: mov [bx],bl ; BX 是从 0 开始的 我们所需的就是 从 0 开始的
2015-04-05 13:14:27 852
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人