RosettaCodeData/Task/Loops-Infinite/8086-Assembly/loops-infinite-2.8086
2023-07-01 13:44:08 -04:00

17 lines
881 B
Text

mov ah, 02h ;prep int 21h for printing to screen
mov ax, seg SpamMessage ;load into ax whatever segment the address of our message is in.
mov ds, ax ;segment registers on the original 8086 must be loaded from a register
cld ;clear the direction flag, this makes commands like "lodsb" auto-increment
SpamOuter:
mov si, offset SpamMessage ;load the address of SpamMessage into the source index
SpamInner:
lodsb ;mov al,[ds:si] and increment si by 1.
cmp al,0 ;is this the terminator?
jz SpamOuter ;point si to the beginning of the message again
mov dl,al ;the DOS interrupt for printing requires the desired character to be in DL
int 21h ;print the chosen character to the screen
jmp SpamInner
SpamMessage db "SPAM",13,10,0