注册 登录
编程论坛 汇编论坛

一段汇编代码求解释!!!!!

zhu224039 发布于 2012-09-19 18:09, 446 次点击
DATA SEGMENT
     DA1 DB 'this is a  sample program'
         DB  0Dh,0Ah,'$'   
DATA ENDS

STACK SEGMENT STACK 'STACK'
      ST1 DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
MAIN PROC FAR
     ASSUME CS:CODE,DS:DATA,SS:STACK
START MOV AX,STACK   ;------------这部分书上说可以实现DOS  返回
      MOV SS,AX      ; 可这本分代码是将DOS系统 当前的数据段基址和偏移地址存放在了 程序申请的堆栈中了
      PUSH DS       ;按微机原理来说,DOS装载程序后  其数据都将入栈保护,将CPU的控制交由程序来执行,将DOS的当前数据段基址  DS:0 放到程序 堆栈段 有什么含义呢
      MOV AX,0
      PUSH AX       ;-------------------------
      MOV AX,DATA
      MOV DS,AX
      MOV AH,9          ;------------------------》一个简单的mov 指令就能调用  DOS 在显示器上显示的系统功能?  
      MOV DX,OFFSET DA1                       ;-----------》这个是取 DA1的偏移地址 DS:DX  
      INT 21H
      RET
MAIN ENDP
CODE ENDS
     END START


[ 本帖最后由 zhu224039 于 2012-9-19 18:11 编辑 ]
1 回复
#2
zklhp2012-09-19 18:12
MOV AH,9          ;------------------------》一个简单的mov 指令就能调用  DOS 在显示器上显示的系统功能?

调用的是int 用中断实现的 ah dx里面的相当于参数

上面的那个就是实现了一个压栈 貌似没啥特殊含义罢

哦 不对 这里难道是为了ret实现返回么 我也不知道了。。
1