Calc
Posted on March 6, 2010, 8:13 pm UTC by Iago (6 months ago)Code (highlighted for ASM)
- [BITS 16]
- [ORG 0X100]
- SECTION .data
- FIRST DW "Insira um numero, ele sera adicionado de 1: ", 0X24
- ERRONE DW "Nao pressione teclas especiais como F1!", 0X24
- ERRTWO DW "Por favor, insira algum numero.", 0X24
- CHAR DQ 0
- SECTION .text
- MAIN:
- XOR DI, DI
- CALL CLR
- MOV DX, FIRST
- MOV AX, 0X0900
- INT 0X21
- CALL GETKEYS
- MOV DX, [CHAR]
- POP DX
- CALL VER
- CALL _ADD
- MOV DX, [CHAR]
- MOV AX, 0X0900
- INT 0X21
- JMP QUIT
- GETKEYS:
- MOV AX, 0X0000
- INT 0X16
- TEST AL, AL
- MOV DX, [ERRONE]
- POP DX
- JZ ERR
- CMP AL, 0X0D
- JE .FINISH
- MOV DL, AL
- MOV AX, 0X0200
- INT 0X21
- MOV [CHAR+DI], AL
- INC DI
- JMP GETKEYS
- .FINISH:
- MOV AL, 0X24
- MOV [CHAR+DI], AL
- RET
- ERR:
- PUSH DX
- MOV AX, 0X0900
- INT 0X21
- JMP MAIN
- VER:
- PUSH AX
- CMP AX, 0X24
- MOV DX, [ERRTWO]
- POP DX
- JE ERR
- RET
- CLR:
- MOV AX, 0X0600
- MOV BX, 0X0700
- MOV CX, 0X0000
- MOV DX, 0X2479
- INT 0X10
- MOV AX, 0X0200
- XOR BX, BX
- XOR DX, DX
- INT 0X10
- RET
- _ADD:
- MOV AX, [CHAR]
- ADD AX, 0X0001
- MOV [CHAR], AX
- RET
- QUIT:
- INT 0X22