Нужно написать программу на Ассемблере, которая выводила бы ФИО заданное кол-во раз, через определённые промежутки времени!
Код (Text): .data FIO db "ФИО$" count dw 0 delay dw 0 ticks dd 0 timer dd 0 .code main: mov ax, @Data mov ds, ax xor ax, ax mov es, ax mov ax, offset timer_irq mov dx, cs cli xchg word ptr es:[8*4+0], ax xchg word ptr es:[8*4+2], dx mov timer[0], ax mov timer[0], dx sti cmp count, 0 jz done next: call sleep mov ah, 09h mov dx, offset FIO int 21h dec count jnz next done: xor ax, ax mov es, ax mov ax, timer[0] mov dx, timer[2] cli mov es:[8*4+0], ax mov es:[8*4+2], dx sti mov ax, 4C00h int 21h sleep: push ax push dx mov ax, delay mov cx, 18 mul cx add ax, word ptr ticks adc dx, word ptr ticks check: cmp dx, word ptr ticks ja exit jb wait cmp ax, word ptr ticks jae exit wait: hlt jmp check exit: ret timer_irq: push ds pusha mov ax, @Data mov ds, ax inc ticks popa pop ds db EA timer dw 0,0 end main что-то вроде этого. delay - количество секунд между выводами ФИО. count - количество раз. если опечаток нет, то остается немного дооформить и будет работать если надо под windows Код (Text): .data FIO db "ФИО",0 cap db "Текст",0 count dd 0 delay dd 0 .code next: push 0 push offset cap push offset FIO push 0 call MessageBoxA mov eax, delay mov edx, eax shl eax, 10 shl edx, 3 sub eax, edx add edx, edx sub eax, edx push eax call Sleep dec count jnz next done: push 0 call ExitProcess end next
Для подобных вопросов есть тема Студентам с вопросами о лабораторных работах сюда. Дальнейшее обсуждение предлагаю вести в её рамках. Да, и прочитайте пожалуйста внимательно первое сообщение этой темы.