Системные функции ввода с клавиатуры - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите написать программу в ассемблере (TASM) 1)Организации паузы и продолжения программы по нажатию клавиши (любой, конкретной) 2)Определить длину файла 3)Переименовать файл и установить в нем время и дату создания

Решение задачи: «Системные функции ввода с клавиатуры»

textual
Листинг программы
; изменить время и дату создания файла
mov AH, 57h ; функция даты/времени
mov AL, 1       ; установить дату/время
mov BX, hаndle  ; установить дескриптор
mov CX, 0       ; очистить cx
or  CX, seс ; добавить секунды
or  CX, min ; добавить минуты
or  CX, hour    ; добавить часы
xor DX, DX  ; очистить DX
or  DX,day  ; добавить день
or  DX, mon ; добавить месяц
or  DX, year    ; добавить год
int 21h
; в сегмент данных
sec     DW  6/2     ; 6 секунд
min DW  15 * 32 ; 15 минут
hour    DW  16*2048 ; 16 часов
day     DW  25      ; 25 число
mon DW  3*32        ; Март
year    DW  25*512  ; 25 лет от 1980г, т.е. 2005 г.

Объяснение кода листинга программы

Объяснение кода:

  1. mov AH, 57h — устанавливает код функции 57h для системного вызова функции даты и времени.
  2. mov AL, 1 — устанавливает режим функции даты и времени на однократный запрос.
  3. mov BX, hаndle — устанавливает дескриптор файла, созданного в сегменте данных, в регистр BX.
  4. mov CX, 0 — очищает регистр CX, который будет использоваться для хранения времени.
  5. or CX, seс — добавляет значение переменной seс (6/2=3) к регистру CX.
  6. or CX, min — добавляет значение переменной min (15*32=480) к регистру CX.
  7. or CX, hour — добавляет значение переменной hour (16*2048=32768) к регистру CX.
  8. xor DX, DX — очищает регистр DX, который будет использоваться для хранения даты.
  9. or DX,day — добавляет значение переменной day (25) к регистру DX.
  10. or DX, mon — добавляет значение переменной mon (3*32=96) к регистру DX.
  11. or DX, year — добавляет значение переменной year (25*512=12800) к регистру DX.
  12. int 21h — вызывает системный вызов функции даты и времени с использованием регистра DX для года, регистра CX для времени и регистра BX для дескриптора файла. Переменные в сегменте данных:
  13. sec DW 6/2 - переменная seс содержит 6/2=3.
  14. *min DW 1532* - переменная min содержит 1532=480.
  15. *hour DW 162048* - переменная hour содержит 162048=32768.
  16. day DW 25 - переменная day содержит 25.
  17. *mon DW 332* - переменная mon содержит 332=96.
  18. *year DW 25512* - переменная year содержит 25512=12800, что эквивалентно 2005 году от нашей эры.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы