搜档网
当前位置:搜档网 › 手把手教你用机器码编程

手把手教你用机器码编程

仅有30字节,尽情揭露各位的本质~咔咔~

方法1:

1.开始->运行,输入debug,回车

2.复制如下代码并粘贴到debug中去:

e100 BA 11 01 B4 09 B9 0A 00 CD 21 E2 FC B4 01 CD 21

e110 C3 49 20 61 6D 20 61 20 53 42 2E 0D 0A 24

具体的方法是单击debug窗口左上角的命令提示符图标,选择编辑->粘贴,回车即可。

3.输入g (运行的意思,括号里面的东西不要傻乎乎打进去啊),回车,看结果吧~

4.看完结果后按回车可退出debug。

方法2:

1.打开UltraEdit32,新建一个文件,输入30个A(或者随便什么字符,仅为下一步做准备)。

2.按Ctrl + H切换到HEX编辑模式,定位到第一字节,依次输入下列代码:

BA 11 01 B4 09 B9 0A 00 CD 21 E2 FC B4 01 CD 21

C3 49 20 61 6D 20 61 20 53 42 2E 0D 0A 24

3.保存为.com文件,双击运行看看!

代码分析:

方法1里,e100,e101是debug的内部命令,暂且不管,其他部分是指令。

为了方便分析,首先将地址和代码对应一下:

00h: BA 11 01

03h: B4 09

05h: B9 0A 00

08h CD 21

0Ah: E2 FC

0Ch: B4 01

0Eh: CD 21

10h: C3

11h: 49 20 61 6D 20 61 20 53 42 2E 0D 0A 24

从11h开始实际是I am a SB, CR, LF(回车换行), $的ASCII码,注意偏移地址为11h。这是这个程序的数据段。下面分析指令段。

回忆一下计算机文化基础的内容,CPU的指令由操作符和操作数组成,前面已经将每条指令都划分出来了。第一个字节是操作符,后面的是操作数。

再普及一个知识,.com文件读入内存时前100h字节是保留的,因此在内存寻址时需要把偏移量加上100h成为绝对地址。知道了这些就可以分析这个程序了。

频繁出现的一个指令是CD 21,CD的意思是调用DOS中断,那这个21(注意是16进制)是不是很熟悉啊~~它就是操作数~CD 21就是调用21号DOS中断的意思~如果不晓得什么是DOS中断的话,只要知道B4 09, BA指令和CD 21结合可以显示一个字符串,B4 01和CD 21结合可以读入键盘就可以了~

前2条指令,B4 09让电脑准备打印字符串,(在CD 21时正式开打),BA 11 01将字符串的

相关主题