Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INCLUDE "MACROS.TXT"
- STACK SEGMENT
- X0 DW 0
- Y0 DW 0
- X1 DW 0
- Y1 DW 0
- STACK ENDS
- DATA SEGMENT
- MS1 DB "1st number:",'$'
- MS2 DB "2nd number:",'$'
- MS3 DB "Result:",'$'
- MS4 DB 0AH,0DH,'$'
- DATA ENDS
- CODE SEGMENT
- ASSUME CS:CODE, DS:DATA, SS:STACK
- PRINT_HEX PROC NEAR
- CMP DH, 9 ;Elegxoume an einai noumero
- JG ADDRS1 ;An oxi einai gramma
- ADD DH, 30H ;An nai, prosthetoume to 30h
- JMP ADDRS2
- ADDRS1:
- ADD DH, 37H ;An einai gramma prosthetoume to 37h
- ADDRS2:
- PRINT DH ;Tipwnoume
- RET
- PRINT_HEX ENDP
- PRINT_HEX1 PROC NEAR ;Tiponoume to periexomeno tou DH
- AND DH,0F0H ;ana 4 bit
- RCR DH, 4
- CALL PRINT_HEX
- MOV DX, X0
- AND DH, 0FH
- CALL PRINT_HEX
- MOV DX,X0
- SAL DX,8
- AND DH,0F0H
- RCR DH,4
- CALL PRINT_HEX
- MOV DX,X0
- SAL DX,8
- AND DH, 0FH
- CALL PRINT_HEX
- RET
- PRINT_HEX1 ENDP
- READ_4B PROC NEAR ;Routina gia na diavazei 4 byte
- MOV CX,4
- MOV BX,0
- READ1:
- SAL BX,4
- CALL HEX_KEYB
- MOV AH,0
- ADD BX,AX
- LOOP READ1
- RET
- READ_4B ENDP
- HEX_KEYB PROC NEAR ;Routina gia anagnwsi enos hex psifiou
- PUSH DX
- IGNORE:
- READ
- CMP AL,30H ;Elegxos ean einai egkyro noumero
- JL IGNORE
- CMP AL,39H
- JG ADDR1
- PUSH AX
- PRINT AL ;Ean einai, to emfanizoume stin othoni
- POP AX
- SUB AX,30H ;kai to metatrepoume apo ASCII
- JMP ADDR2
- ADDR1:
- CMP AL,'A' ;Elegxos ean einai egkyro gramma
- JL IGNORE
- CMP AL,'F'
- JG IGNORE ;Ean oxi, to agnooume
- PUSH AX
- PRINT AL ;Emfanisi
- POP AX
- SUB AX,37H ;Metatropi apo ASCII
- ADDR2:
- POP DX
- RET
- HEX_KEYB ENDP
- MAIN PROC FAR
- MOV AX,DATA
- MOV DS,AX
- START:
- PRINT_STR MS1
- CALL READ_4B ;Diavazoume ta prwta 4 bytes
- MOV X1,BX ;ta apothikeuoume sti stoiva
- CALL READ_4B ;kai antistoixa ta epomena 4
- MOV X0,BX
- PRINT_STR MS4
- PRINT_STR MS2
- CALL READ_4B ;Kanoume ta idia kai gia to deutero
- MOV Y1,BX ;noumero
- CALL READ_4B
- MOV Y0,BX
- PRINT_STR MS4
- PRINT_STR MS3
- MULT1:
- MOV AX,X0 ;X0 x Y0
- MUL Y0
- MOV BX,DX ;ston BX vazoume tin MSW
- MOV CX,AX ;kai ston CX ti LSW
- MULT2:
- MOV AX,X0 ;X0 x Y1
- MUL Y1
- ADD BX,AX ;prosthetoume tin LSW stin proigoumeni MSW
- MOV X0,DX ;apothikeuoume tin MSW
- MULT3:
- MOV AX,X1 ;X1 x Y0
- MUL Y0
- ADD AX,BX ;prosthetoume tin LSW stin proigoumeni
- MOV BX,AX
- ADC DX,X0 ;to idio me tis MSW
- MOV X0,DX
- MULT4:
- MOV AX,X1 ;X1 x Y1
- MUL Y1
- ADD AX,X0 ;prosthetw tin LSW stis MSW apo prin
- ADC DX,0
- MOV X0,DX
- PUSH AX
- MOV DX, X0
- AND DH, 0FH
- CALL PRINT_HEX
- MOV DX,X0
- SAL DX,8
- AND DH,0F0H
- RCR DH,4
- CALL PRINT_HEX
- MOV DX,X0
- SAL DX,8
- AND DH, 0FH
- CALL PRINT_HEX
- POP AX
- MOV X0,AX
- MOV DX,X0
- CALL PRINT_HEX1
- MOV X0,BX
- MOV DX,X0
- CALL PRINT_HEX1
- MOV X0,CX
- MOV DX,X0
- CALL PRINT_HEX1
- PRINT_STR MS4
- EXIT
- CODE ENDS
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement