Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Процедура в ассемблере


Автор: hecz 2.12.2007, 22:48
нужно само тело программы оформить в виде процедуры вызываемой из главной программы. У меня небольшие проблеммы но думаю чтодляспециалиста это на 30 секунд где-то.... smile 

mydata    segment
tabl        db    '0123456789ABCDEF'
st1        db    '  '
mydata ends

my_stack    segment    stack
        dw    32 dup (?)
my_stack    ends

oursg    segment
    assume    cs:oursg, ds:mydata

; Код
begin:
    mov    ax, mydata
    mov    ds, ax
    xor    ax,ax

;myproc  proc
    mov    ax,0a5h
    not    ax
    add    ax,1
    push    ax
    push    ax
    mov    cl,7
    shr    ax,cl
    cmp    ax,0
    je    plus
    jne    minus

plus:    mov    dl,'+'
    mov    ah,2h
    int    21h
    jmp     contin
minus:    mov    dl,'-'
    mov    ah,2h
    int    21h

contin:    pop     ax
    mov    cl,4
    shr    ax,cl
    and    ax,15
    lea    bx, tabl
    xlat
    mov    dx,ax
    mov    ah,2h
    int    21h
;---------------------------
    pop     ax
    and    ax,15
    lea    bx, tabl
    xlat
    mov    dl,al
    mov    ah,2h
    int    21h
;-------------------------------------------
;ret
;myproc endp

;call    myproc
exit:    mov    ax, 4C00h
    int    21h
oursg    ends
end    begin[*]

Автор: MAKCim 2.12.2007, 23:40
hecz

M
MAKCim
Модератор: Используйте тег код!

Автор: dumb 3.12.2007, 02:33
Код

...
oursg    segment
    assume    cs:oursg, ds:mydata
; Код
myproc  proc
    mov    ax,0a5h
...
    ret
myproc endp

begin:
    mov    ax, mydata
    mov    ds, ax
    xor    ax,ax
    call    myproc
exit:
    mov    ax, 4C00h
    int    21h
oursg    ends
end    begin

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)