`
akliyiping
  • 浏览: 2494 次
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
编译: ml /c /coff /Cp hello.asm 这一步生成hello.obj文件。 链接目标文件: link /SUBSYSTEM:WINDOWS /LIBPATH:D/masm32/lib hello.obj 这一步生成exe可执行文件。运行hello.exe会出现一个消息框。
1.cs+ip确定了一个代码段物理地址,这段内存地址被cup看成一个栈, 这个地址是没办法通过普通方法来改变的,最常见的使用jmp语句 例:jmp 2ae3:3 执行后:cs=2ae3,ip=0003h,若只想修改ip,那可以用jmp 某个寄存器,来改变ip的内容. 2.ss+sp确认了一个代码段的栈顶; 3.ds+[]确定了一个数据地址.[]为偏移地址,ds内的值不能通过常规方法改变, 只能通过中转的方式,如:mov ax,1000 mov ds,ax 4.cpu中用16位存放寄存器存放一个字.因为内存只能存一个字节,所以字的低八 位对应内存的低位,内存的高八位对应内存的高位. 5.关于栈顶 ...

开始学习asm

从今天起,开始学习asm,也是我第一次写博客,我会把我所有的学习记录存到博客上,记录我的学习历程
内存和寄存器大小 1.一个内存地址对应的内存空间为1byte 2.寄存器可以存放16位二进制数,即2byte win7 64位使用DOSBox0.74-win32-installer+debug32调试asm; 使用步骤:比如debug32放在d盘下, mount c d:/ c:debug debug常用命令 1.-r 查看寄存器 2.-d 查看内存 3.-e 改写内存中的内容 -a以汇编的形式改写内存中的内容 4.-u 查看内存中机器码的定义(就是汇编指令) 5.-t 执行内存中的机器码(执行cs:id对应的机器码,行后ip指向下一个指令)
Global site tag (gtag.js) - Google Analytics