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

汇编语言超浓缩教程

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
FFh。XCHG常用于需要暂时保留某个寄存器中的内容时。
   当然,还得一个子程序(CRLF)使后显示的十六进制数不会盖掉先输入的十进制数。
   crlf segment
   assume cs:crlf
   mov dl,0dh ;回车的ASCII码0DH入DL
   mov ah,2
   int 21h
   mov dl,0ah ;换行的ASSII码0AH入AH
   mov ah,2
   int 21h
   int 20 ;回主程序
   crlf ends
   end

  现在我们就可以将BINIHEX、DECIBIN及CRLF等模块合并成一个大程序了。首先,我们要将这三个模块子程序略加改动。然后,再写一段程序来调用每一个子程序。
   crlf proc near;
   mov dl,0dh
   mov ah,2
   int 21h
   mov dl,0ah
   mov ah,2
   int 21h
   ret
   crlf endp

  类似SEGMENT与ENDS的伪指令,PROC与ENDP也是成对出现,用来识别并定义一个程序。其实,PROC 真正的作用只是告诉编译器:所调用的程序是属于近程(NEAR)或远程(FAR)。 一般的程序是由 DEBUG 直接调用的,所以用 INT 20 返回,用 CALL 指令所调用的程序则改用返回指令RET,RET会把控制权转移到栈顶所指的地址,而该地址是由调用此程序的 CALL指令所放入的。
   各模块都搞定了,然后我们把子程序组合起来就大功告成
   decihex segment ;主程序
   assume cs:decihex
   org 100h
   mov cx,4 ;循环次数入cx;由于子程序要用到cx,故子程序要将cx入栈
   repeat: call decibin;调用十进制转二进制子程序
   call crlf ;调用添加回、换行符子程序
   call binihex ;调用二进制转十六进制并显示子程序
   call crlf
   loop repeat ;循环4次,可连续运算4次
   mov ah,4ch ; 调用DOS21号中断4c号功能,退出程序,作用跟INT 20H
   int 21H ; 一样,但适用面更广,INT20H退不出时,试一下它
   decibin proc near push cx ;将cx压入堆栈,;
   ┇ exit: pop cx ;将cx还原; retdecibin endp binihex proc near push cx
   ┇ pop cx retbinihex endp crlf proc near
   push cx
   ┇ pop cx retcrlf endpdecihex ends end

  CALL指令用来调用子程序,并将控制权转移到子程序地址,同时将CALL的下行一指令地址定为返回地址,并压入堆栈中。CALL 可分为近程(NEAR)及远程(FAR)两种:1.NEAR:IP的内容被压入堆栈中,用于程序与程序在同一段中。2.FAR:CS 、IP寄存器的内容依次压入堆栈中,用于程序与程序在不同段中。PUSH、POP又是一对指令用于将寄存器内容压入、弹出,用来保护寄存器数据,子程序调用中运用较多。堆栈指针有个“后进先出”原则,像PUSH AX,PUSH BX…POP BX,POP AX这样才能作到保护数据丝毫不差。

  汇编语言超浓缩教程到这要告一段落了,希望能奠定你独立设计的基础。而更多更好的技巧则全依赖你平时的积累了。祝你成功!

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

    免费论文

    原创论文

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