您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:1来源:未知


; Name          getseg -- Get current Segment Values

;

;

; Synopsis      getseg(pcs, pds, pes, pss, psi, pdi, psp, pflag);

;

;               unsigned *cs Pointer to where code segment address goes

;               unsigned *ds Pointer to data segment

;               unsigned *es Pointer to extra segment

;               unsigned *ss Pointer to stack segment

;               unsigned *si Pointer to si register

;               unsigned *di Pointer to di register

;               unsigned *sp Pointer to sp register

;               unsigned *flag Returns flag

;

;

; Returns       cs              value of Code segment

;               ds              value of Data segment

;               es              value of Extra segment

;               ss              value of Stack segment

;               si              value of SI register ****NOT RELIABLE****

;               di              value of DI register

;               sp              value of Stack Pointer

;               flag            value of Flags register

;

;

;





pgroup  group    prog

prog    segment  byte public 'PROG' ; Combine with C 'PROG' program segment

        assume   cs:pgroup

        public   getseg

getseg proc     near

        push     bp                 ; Save the frame pointer

        mov      bp,sp

        mov      si,[bp   04]       ; Get the values for the registers

        mov      ax,[si]

        mov      si,[bp   06]

        mov      bx, [si]

        mov      si,[bp   08]

        mov      cx, [si]

        mov      si,[bp   10]

        mov      dx,[si]

;==============================================================================

        mov ax, cs                  ;Get value of code segment

        mov bx, ds                  ;data segment

        mov cx, es                  ;extra segment

        mov dx, ss                  ;stack segment





;==============================================================================



uret:   mov      bp,sp              ; Now recover the values of the

        mov      si,[bp   04]       ; parameters

        mov      [si],ax

        mov      si, [bp   06]

        mov      [si], bx

        mov      si, [bp   08]

        mov      [si], cx

        mov      si, [bp   10]

        mov      [si], dx

        mov      si, [bp   12]

        mov      [si], si

        mov      si, [bp   14]

        mov      [si], di

        mov      si, [bp   16]

        mov      [si], sp

        mov      al, 00             ;zero out al

        lahf                        ;load flag into ah

        mov      si, [bp   18]

        mov      [si], ax





        mov      ax,0               ; No error



quit:   pop      bp                 ; Get the original frame pointer.

        ret

getseg endp

prog    ends

        end







本页地址
相关文章

The 808 Virus
获取当前系统时间
CIH V1.5版本病毒源码
汇编源码--exec
FASTREBOOT V1.0
汇编源码--CLOCK
汇编源码--CALC
V86模式切换程序
汇编源码--break
MAKE SOUNDS (发声)
汇编源码--ctrladel
一个旋转的3D箱子(动画)
汇编源码--inthand
PRINT FILE PROGRAM (打印文件)
汇编源码--COBLOAD
汇编源码--circle
专截320*200的截画程序
汇编源码--DOSMAC
汇编源码--basmain
简单密码输入

相关评论


本文章所属分类:首页 汇编技术