Ir para conteúdo
Fórum Script Brasil
  • 0

Programação de Baixo Nível - Assembly i8086


Idelmar

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 0

Calculadora

           PAGE    ,132
           TITLE   CALC
CGROUP           GROUP   CODESEG
CODESEG        SEGMENT PARA PUBLIC 'CODE'
           ASSUME  CS:CGROUP,DS:CGROUP,ES:CGROUP
           PUBLIC  CALC

           ORG     100H

CALC           PROC    FAR
           JMP     START

;---------------------------------------------------------------------;
;                                     ;
;                 DATA AREA                     ;
;                                     ;
;---------------------------------------------------------------------;

           DB      'INTERRUPT NUMBER ='
INT_NUMBER     DB      61h

SCREEN_HANDLE  DW      0001h

MESSAGE        DB      'PEMATH is not resident',13,10
MESSAGE_LEN    EQU     $-MESSAGE

TAG           DB      'PEMATH'
TAG_LEN        EQU     $-TAG

;---------------------------------------------------------------------;
;                                     ;
;                 CODE AREA                     ;
;                                     ;
;---------------------------------------------------------------------;

START:
;---------------------------------------------------------------------;
;    TEST FOR PRESENCE OF CALCULATOR                     ;
;---------------------------------------------------------------------;
           SUB     AX,AX
           MOV     ES,AX
           SUB     BH,BH
           MOV     BL,INT_NUMBER
           SHL     BX,1
           SHL     BX,1
           MOV     DI,ES:[BX]
           MOV     ES,ES:[BX+2]
           ADD     DI,4
           LEA     SI,TAG
           MOV     CX,TAG_LEN
     REPE  CMPSB
           JE      CALL_CALC
           MOV     BX,SCREEN_HANDLE
           MOV     CX,MESSAGE_LEN
           LEA     DX,MESSAGE
           MOV     AH,40h
           INT     21h
           JMP     SHORT CALC_EXIT
;---------------------------------------------------------------------;
;    CALL CALCULATOR                             ;
;---------------------------------------------------------------------;
CALL_CALC:
           MOV     AL,INT_NUMBER
           MOV     BYTE PTR INT_CODE,AL
           DB      0CDh     ; INT
INT_CODE:
           DB      00h
           NOP
           NOP

CALC_EXIT:
           INT     20h

CALC           ENDP

CODESEG        ENDS
           END     CALC

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...