20CN网络安全小组第一代论坛
发表新主题  发表回复

个人资料 | 社区目录 用户登录 | | 论坛搜索 | 常见问题 | 论坛主页
  下一个最老的主题   下一个最新的主题
» 20CN网络安全小组第一代论坛   » 电 脑 技 术   » 编程破解   » 学习汇编的好帮手(第七篇)

   
作者 标题: 学习汇编的好帮手(第七篇)
第007元素
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
※ 现在,我们来剖析一个更见弹性的程式∶可以由键盘输入任意
 字串,然後再忠实地显示一次。
※ 请将存在磁碟中的程式 MIRROR.COM 载入并执行。
1.请输入 NMIRROR.COM 3.请输入 G
2.请输入 L 4.请输入 THIS IS MY PROGRAM$

※ 提供缓冲式键盘输入∶DOS 的 0Ah 号函数服务。
※ 输入∶AH=ADS:DX = 缓冲区位址
※ 执行∶INT21结果∶键盘字元存於缓冲区内
※ 缓冲区实际上就是一系列的记忆位置,其大小由 db 所定义。

※ 本程式 db 20 指示 DEBUG 保留 20h 个未用的记忆体位置供
 缓冲区使用,并将值 20h 存入第一个位元组(116)中。
※ 当您输入字串并按 Enter 键後,DOS 的 0Ah 号功能会将真正
 输入的字元个数存第二个位元组(117)中。

1FED:0100 MOV DX,0116
1FED:0103 MOV AH,0A
1FED:0105 INT 21
1FED:0107 MOV DL,0A
1FED:0109 MOV AH,02
1FED:010B INT 21
1FED:010D MOV DX,0118
1FED:0110 MOV AH,09
1FED:0112 INT 21
1FED:0114 INT 20
1FED:0116 DB 20

※ 由於缓冲式键盘输入功能 Ah 在每个字串最後都会印一个归位
 字元(由 Enter 键产生),使得游标会自动回到输入列的最
 前端。

※ 为了使萤幕映射输出的字串不会盖掉原来输入的字串,所以利
 用功能 2h 列印一个换列字元(OAh),使得游标移到下一列的
 的最前端。

※ 列印字串功能 9h 的 DX 暂存器要保存字串的启始位置。
※ 牢记∶9h 功能只有遇到 $ 符号时才会停止输出字元,因此您
 打入字串的最後必须加上 $ 符号,否则 9h 功能会继续将记忆
 体中的无用资料胡乱地列印出来。

※ 『组译器,Assembler』可将符号指令转换成机器语言。
※ 『机器语言』是真正存在 PC 记忆体,而由 8088 处理机执行
 的二进位数值。
※ 由二进位数值组成的程式,能以 COM 的档案形式存於磁片上。
 符号指令 记忆体
MOV AH,2 DEBUG
INT 21 输入  输出
INT 20 (A命令)
(打入 DEBUG 中) 目的码

※ 撰写一个较长的组合语言程式时,若我们要逐一翻阅 8088
 参考手册,将每个指令组合成目的码,则您将不会觉得学习
 组合语言是件有意义的事。
※ 然而,机器语言程式规划的过程中,最无法和人类的天份配
 合,但却又是与电脑最能配合的阶段,便是『组合』本身。
※ 『工欲善其事,必先利其器』,Micrsoft MASM 是 PC 最佳
 的组译器,可自动将组合语言转换为机器语言。

※ 与其说 DEBUG 类似组译器,倒不如说它较类似直译器更贴切。
※ DEBUG 的 A 命令可将每一个符号指令,逐一转成机器语言,
 存於记忆体中,且立刻执行。
※ 真正组译器(MASM)的运作是利用文书处理程式(如∶EDLIN
 、PE Ⅱ等)将符号指令建成一个完全独立且附属档名为 .ASM
 的文字档案。
※ 此文字档案又称『原始码档案』,是 MASM 程式的输入部分。
 输入 MASM 输出
SMILE.ASM SMILE.OBJ

※ MASM 将输入的 ASM 档案,组译且建成一个 .OBJ 的磁碟档案
 ,称为『目的码档案,OBJet』。
※ OBJ 档案仅包含有关程式各部份要载入何处及如何与其他程式
 合并的各项资讯,无法直接载入记忆体执行。

※ 『链结程式,LINK』可帮我们将 OBJ 档案转换成可载入记忆体
 执行(EXEcute)的 EXE 档案。
※ 您还可以用『EXE2BIN,EXEcute TO BINary』档案,将 EXE 档
 案转成 COM (COMmand)档案。
※ DOS 的 COMMAND.COM 在执行外部命令时,是直接在适当的磁片
 中寻找一个命令处置档,并加以执行。
※ 命令处置档有三类,以其附属档名来区别;COMMAND.COM 每次
 都是以固定的顺序寻找,其优先顺序为 COM → EXE → BAT。

※ COM 档案只由程式所需的二进位数值所组成,是储存程式最简
 单的方式,不但占用的记忆体最少,而且载入速度最快。
※ EXE 档案除了二进位数值外,同时还包含一个由档案有关的各
 种资讯所组成的『档头,Header』,所以档案较大。
※ COM 档案可直接利用 INT 20 返回 DEBUG,而 EXE 档案则需要
 较复杂的返回程序。
※ 载入 COM 档案时,无法与其他档案键结起来,所以不能产生
 记忆体空间超过 64K 的 COM 档案;而 EXE 档案则较易利用不
 同的记忆段来执行不同的功能,所以其大小可超过 64K Bytes。
※ 由於初学的程式不大,且为了完全了解所有的过程,所以我们
 以 COM 档案为第一个组合语言程式的形式。

IP: 已记录

 
发表新主题  发表回复 关闭主题 突出主题 移动主题 删除主题 下一个最老的主题   下一个最新的主题
 - 适于打印的主题视图
转到:
联系我们 | 20CN网络安全小组

Powered by Infopop Corporation
UBB.classic™ 6.5.0
NetDemon修改版 1.5.0, 20CN网络安全小组 版权所有。