В этой задаче мне нужно отслеживать все изменения в регистрах и переменных. Включая MAR, MDR, EAX, EBX и EDX. Это код
; Description: This program gets the age of the user and and calculates their age in dog years (age x 7).
INCLUDE Irvine32.inc
.data
age DWORD ? ; User's age (0x1000)
hi_there BYTE "Hi there, this is Paris",0 ; Greeting the user (0x1004)
prompt1 BYTE "Can I have your age please?",0 ; Gets age (0x1008)
output BYTE "So, your age in dog years is: ",0 ; Reposts dog age (0x100C)
byebye BYTE "Thanks for passing by, have a great day!",0 ; Bye bye (0x1010)
.code
main PROC
; Greet the user
mov EDX, OFFSET hi_there ; Set up for call to WriteString and greet the user
call WriteString
call Crlf
; Gets the user's age
mov EDX, OFFSET prompt1 ; Asks the user's age
call WriteString
call Crlf
call ReadInt ; Reads the users age. Age in EAX
call Crlf
; Calculate the dog years and stores the dog age
mov EBX, 7
mul EBX
mov age, EAX ; Stores the users dog age. Dog age also in EAX
; Reports the dog years and says bye
mov EDX, OFFSET output
call WriteString
mov EAX, age
call WriteDec
call Crlf
mov EDX, OFFSET byebye
call WriteString
call Crlf
exit ;exit to operating system
main ENDP
END main
Шаги , указанные , указаны в красный , а остальное - то, что я сделал. Чтобы было легче читать, я выделил каждый раз, когда MAR, MDR, EAX, EBX, EDX и возраст менялись, потому что все остальное менялось на каждом шагу.
Пожалуйста, дайте мне знать, если это правильно или нет, я не могу найти никакой помощи по изменениям регистра в остальной части интернета