forked from Samiha-Sadek/Microprocessor-Simulation-Game
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScr_Dec.inc
More file actions
67 lines (62 loc) · 1.41 KB
/
Scr_Dec.inc
File metadata and controls
67 lines (62 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
.286
ScoreToDecimal MACRO ScoreStr, ScoreDec
local Proceed
local Convertdec1
local Convertdec2
local Convertdec3
local Invalid
local EndOfscore
;ScoreStr = Score as string
;ScoreDec = Score in decimal
pusha
mov cx, 0 ;initialize counter with 0
lea di, ScoreStr
Proceed:
mov al, byte ptr [di]
mov ah, 0
cmp al, 24h
je Convertdec1
cmp al, 30h
jb Invalid
cmp al, 39h
ja Invalid
;Valid:
inc di ;move pointer to the next byte
inc cx ;increment counter
jmp Proceed
Convertdec1:
mov byte ptr [di], 24h
dec di ;dec di to point on the least significant byte
mov bl, byte ptr [di]
sub bl, 30h ;subtract 30h to convert ascii to number
mov bh, 0
mov ScoreDec, bx
sub cx, 1
jnz Convertdec2
jmp EndOfscore
Convertdec2:
dec di
mov al, byte ptr [di]
sub al, 30h ;subtracr 30h to convert ascii to number
mov ah,0
mov bl, 10
mul bl
add ScoreDec, ax
sub cx, 1
jnz Convertdec3
jmp EndOfscore
Convertdec3:
dec di
mov al, byte ptr [di]
sub al, 30h ;subtracr 30h to convert ascii to number
mov ah,0
mov bl, 100
mul bl
add ScoreDec, ax
jmp EndOfscore
Invalid:
lea si, ScoreDec
mov word ptr [si], 100
EndOfscore:
popa
ENDM ScoreToDecimal