TITLE Program Template (main.asm) INCLUDE Irvine32.inc .data diceOne DWORD ? dic
ID: 3716142 • Letter: T
Question
TITLE Program Template (main.asm)
INCLUDE Irvine32.inc
.data
diceOne DWORD ?
diceTwo DWORD ?
win DWORD 7, 11
lose DWORD 2, 3, 12
mark DWORD 4, 5, 6, 8, 9, 10
markCounter DWORD ?
userInput BYTE 'Enter integer: ', 0
numRolls DWORD ?
printWon BYTE 'Won: ', 0
wonCounter DWORD ?
printWin BYTE ' You win!', 0
printLost BYTE 'Lost: ', 0
lostCounter DWORD ?
printLose BYTE ' You lose!', 0
printTotal BYTE 'Total: ', 0
space DWORD ' ', 0
printPlus BYTE ' + ', 0
printMark BYTE ' Mark ', 0
.code
main PROC
call randomize ; set random seed
mov ecx, 6 ; counter set to 6
mov edx, offset userInput ; print string
call writeString
call readInt ; read input
mov numRolls, eax ; store input in variable
mov ecx, numRolls
mov eax, 0
mov edi, offset win
call gamesRolled
exit
main ENDP
;number of games rolled based on user input
gamesRolled PROC uses eax ecx
DICEROLLS:
call crlf
;diceOne roll
mov eax, 5 ;move value into eax to pass as parameter for randomrange
call randomRange ;randomrange stored in eax 0-5
inc eax
mov diceOne, eax ;mov the value of randomrange into variable
call writeDec
push edx ;push edx off stack to print space
mov edx, OFFSET printPlus
call writeString
pop edx
;diceTwo roll
mov eax, 6
call randomRange
inc eax
mov diceTwo, eax
call writeDec
add eax, diceOne ; add diceOne roll to diceTwo roll
cmp eax, win ; comp eax value to win
je wins
cmp eax, lose
je losses
cmp eax, mark
je marks
LOOP DICEROLLS
ret
gamesRolled ENDP
wins PROC uses edi ecx
mov edi, offset win
mov ecx, lengthof win
cmp eax, [edi]
add edi, type win
push edx
mov edx, offset printWin
call writeString
pop edx
jmp gamesRolled
ret
wins ENDP
losses PROC uses edi ecx
mov edi, offset lose
mov ecx, lengthof lose
cmp eax, [edi]
add edi, type lose
push edx
mov edx, offset printLose
call writeString
pop edx
jmp gamesRolled
ret
losses ENDP
marks PROC uses edi ecx
mov edi, offset lose
mov ecx, lengthof lose
cmp eax, [edi]
add edi, type lose
push edx
mov edx, offset printMark
call writeString
pop edx
jmp gamesRolled
ret
marks ENDP
END main
Explanation / Answer
Solution:
INCLUDE Irvine32.inc
.data
diceOne DWORD ?
diceTwo DWORD ?
win DWORD 7, 11
lose DWORD 2, 3, 12
mark DWORD 4, 5, 6, 8, 9, 10
markCounter DWORD ?
userInput BYTE 'How many rolls would you like to see: ', 0
numRolls DWORD ?
printWon BYTE 'Won: ', 0
wonCounter DWORD ?
printWin BYTE ' Win', 0
printLost BYTE 'Loss: ', 0
lostCounter DWORD ?
printLoss BYTE ' Loss', 0
printTotal BYTE 'Total: ', 0
space DWORD ' ', 0
printPlus BYTE ' + ', 0
printMark BYTE ' Mark ', 0
.code
main PROC
call randomize ; set random seed
mov ecx, 6 ; counter set to 6
mov edx, offset userInput ; print string
call writeString
call readInt ; read input
mov numRolls, eax ; store input in variable
mov ecx, numRolls
mov eax, 0
mov edi, offset win
call gamesRolled
exit
main ENDP
;number of games rolled based on user input
gamesRolled PROC uses eax ecx
DICEROLLS:
call crlf
;diceOne roll
mov eax, 5 ;move value into eax to pass as parameter for randomrange
call randomRange ;randomrange stored in eax 0-5
inc eax
mov diceOne, eax ;mov the value of randomrange into variable
call writeDec
push edx ;push edx off stack to print space
mov edx, OFFSET printPlus
call writeString
pop edx
;diceTwo roll
mov eax, 6
call randomRange
inc eax
mov diceTwo, eax
call writeDec
add eax, diceOne ; add diceOne roll to diceTwo roll
cmp eax, win ; comp eax value to win
je wins
cmp eax, lose
je losses
cmp eax, mark
je marks
LOOP DICEROLLS
ret
gamesRolled ENDP
wins PROC uses edi ecx
mov edi, offset win
mov ecx, lengthof win
cmp eax, [edi]
add edi, type win
push edx
mov edx, offset printWin
call writeString
pop edx
jmp gamesRolled
ret
wins ENDP
losses PROC uses edi ecx
mov edi, offset lose
mov ecx, lengthof lose
cmp eax, [edi]
add edi, type lose
push edx
mov edx, offset printLoss
call writeString
pop edx
jmp gamesRolled
ret
losses ENDP
marks PROC uses edi ecx
mov edi, offset lose
mov ecx, lengthof lose
cmp eax, [edi]
add edi, type lose
push edx
mov edx, offset printMark
call writeString
pop edx
jmp gamesRolled
ret
marks ENDP
END main
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.