Помогите Бога Ради!

Тема в разделе "WASM.BEGINNERS", создана пользователем Patriot86rus, 5 фев 2010.

Статус темы:
Закрыта.
  1. Patriot86rus

    Patriot86rus New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2010
    Сообщения:
    6
    Нужно написать программу на Ассемблере, которая выводила бы ФИО заданное кол-во раз, через определённые промежутки времени!
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Код (Text):
    1. .data
    2. FIO      db "ФИО$"
    3. count   dw 0
    4. delay    dw 0
    5. ticks     dd 0
    6. timer    dd 0
    7. .code
    8. main:
    9.  mov ax, @Data
    10.  mov ds, ax
    11.  xor ax, ax
    12.  mov es, ax
    13.  mov ax, offset timer_irq
    14.  mov dx, cs
    15.  cli
    16.  xchg word ptr es:[8*4+0], ax
    17.  xchg word ptr es:[8*4+2], dx
    18.  mov timer[0], ax
    19.  mov timer[0], dx
    20.  sti
    21.  cmp count, 0
    22.  jz done
    23. next:
    24.  call sleep
    25.  mov ah, 09h
    26.  mov dx, offset FIO
    27.  int 21h
    28.  dec count
    29.  jnz next
    30. done:
    31.  xor ax, ax
    32.  mov es, ax
    33.  mov ax, timer[0]
    34.  mov dx, timer[2]
    35.  cli
    36.  mov es:[8*4+0], ax
    37.  mov es:[8*4+2], dx
    38.  sti
    39.  mov ax, 4C00h
    40.  int 21h
    41. sleep:
    42.  push ax
    43.  push dx
    44.  mov ax, delay
    45.  mov cx, 18
    46.  mul cx
    47.  add ax, word ptr ticks
    48.  adc dx, word ptr ticks
    49. check:
    50.  cmp dx, word ptr ticks
    51.  ja exit
    52.  jb wait
    53.  cmp ax, word ptr ticks
    54.  jae exit
    55. wait:
    56.  hlt
    57.  jmp check
    58. exit:
    59.  ret
    60. timer_irq:
    61.  push ds
    62.  pusha
    63.  mov ax, @Data
    64.  mov ds, ax
    65.  inc ticks
    66.  popa
    67.  pop ds
    68.  db EA
    69. timer dw 0,0
    70. end main
    что-то вроде этого. delay - количество секунд между выводами ФИО. count - количество раз.
    если опечаток нет, то остается немного дооформить и будет работать
    если надо под windows
    Код (Text):
    1. .data
    2. FIO         db "ФИО",0
    3. cap         db "Текст",0
    4. count      dd 0
    5. delay       dd 0
    6. .code
    7. next:
    8.  push 0
    9.  push offset cap
    10.  push offset FIO
    11.  push 0
    12.  call MessageBoxA
    13.  mov eax, delay
    14.  mov edx, eax
    15.  shl eax, 10
    16.  shl edx, 3
    17.  sub eax, edx
    18.  add edx, edx
    19.  sub eax, edx
    20.  push eax
    21.  call Sleep
    22.  dec count
    23.  jnz next
    24. done:
    25.  push 0
    26.  call ExitProcess
    27. end next
     
  3. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
Статус темы:
Закрыта.