当前位置: 网学 > 编程文档 > 汇编语言 > 正文

汇编语言超浓缩教程

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
lly

  我们可以用U命令将十六进制的机器码反汇编(Unassemble)成汇编指令。你将发现每一行右边的汇编指令就是被汇编成相应的机器码,而8086实际上就是以机器码来执行程序
   1.输入 U100,106
   1FED:0100 B201 MOV DL,01
   1FED:0102 B402 MOV AH,02
   1FED:0104 CD21 INT 21
   1FED:0106 CD20 INT 20
   DEBUG可以用R命令来查看、改变寄存器内容。CS:IP寄存器,保存了将执行指令地址。
   1.输入R
   AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
   DS=1FED ES=1FED SS=1FED CS=1FED IP=0100 NV UP EI PL NZ NA PO NC
   1FED:0100 B201 MOV DL,01

  当程序由DS:100开始执行,那么终止程序时,DEBUG会自动将IP内容重新设定为100。当你要将此程序做成一个独立的可执行文件,则可以用N命令对该程序命名。但一定要为COM文件,否则无法以DEBUG载入。
   输入N SMILE.COM ;我们得告诉DEBUG程序长度:程序从100开始到106,故占用7
   ;字节。我们利用BX存放长度值高位部分,而以CX存放低位部分。
   2.输入RBX ;查看 BX 寄存器的内容,本程序只有7个字节,故本步可省略
   3.输入 RCX  ;查看 CX 寄存器的内容
   4.输入 7  ;程序的字节数
   5.输入 W ;用W命令将该程序写入(Write)磁盘中

  修行至此,我们便可以真正接触8086汇编指令了。 当我们写汇编语言程序的时候,通常不会直接将机器码放入内存中,而是打入一串助记符号(Mnemonic Symbols),这些符号比十六进制机器码更容易记住,此之谓汇编指令。助记符号,告诉CPU应执行何种运算。 也就是说,助忆符号所构成的汇编语言是为人设计的,而机器语言是对PC设计的。

  现在,我们再来剖析一个可以将所有ASCII码显示出来的程序。
   1. 输入 DEBUG
   2. 输入 A100
   3.输入 MOV CX,0100 ;装入循环次数
   MOV DL,00 ;装入第一个ASCII码,随后每次循环装入新码
   MOV AH,02
   INT 21
   INC DL ;INC:递增指令,每次将数据寄存器 DL 内的数值加 1
   LOOP 0105 ;LOOP:循环指令,每执行一次LOOP,CX值减1,并跳
   ;到循环的起始地址105,直到CX为0,循环停止
   INT 20
   4.输入 G即可显示所有ASCII码
 
   当我们想任意显示字符串,如:UNDERSTAND?,则可以使用DOS21H号中断9H号功能。输入下行程序,存盘并执行看看:
   1.输入 A100
   MOV DX,109 ;DS:DX = 字符串的起始地址
   MOV AH,9 ;DOS的09h功能调用
   INT 21 ;字符串输出
   INT 20
   DB ''UNDERSTAND?

  • 上一篇资讯: 如何学习汇编语言
  • 下一篇资讯: Linux下的汇编程序设计
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号
    ';定义字符串

      在汇编语言中,有两种不同的指令:1.正规指令:如 MOV 等,是属于CPU的指令,用来告诉CPU在程序执行时应做些什么,所以它会以运算码(OP-code)的方式存入内存中;2.伪指令:如DB等,是属于DEBUG等编译器的指令,用来告诉编译器在编译时应做些什么。DB(Define Byte)指令用来告诉DEBUG 将单引号内的所有ASCII 码放入内存中。使用 9H 功能的字符串必须以$结尾。用D命令可用来查看DB伪指令将那些内容放入内存。
       6.输入 D100
       1975:0100 BA 09 01 B4 09 CD 21 CD-20 75 6E 64 65 72 73 74 !. underst
       1975:0110 61 6E 64 24 8B 46 F8 89-45 04 8B 46 34 00 64 19 and$.F..E..F4.d.
       1975:0120 89 45 02 33 C0 5E 5F C9-C3 00 C8 04 00 00 57 56 .E.3.^_.WV
       1975:0130 6B F8 0E 81 C7 FE 53 8B-DF 8B C2 E8 32 FE 0B C0 k..S..2
       1975:0140 74 05 33 C0 99 EB 17 8B-45 0C E8 D4 97 8B F0 89 t.3..E.
       1975:0150 56 FE 0B D0 74 EC 8B 45-08 03 C6 8B 56 FE 5E 5F Vt..E.V.^_
       1975:0160 C9 C3 C8 02 00 00 6B D8-0E 81 C3 FE 53 89 5E FE k..S.^.
       1975:0170 8B C2 E8 FB

    上一页1234567下一页
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: 如何学习汇编语言
  • 下一篇资讯: Linux下的汇编程序设计
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号