Переписка сектора памяти - Assembler

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

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

Ребят, помогите, пжлст! Нужно написать программу (лабораторная работа), а как обычно бывает в нашей стране, препода не было пол семестра и всё делается в последний момент. Вообщем то полный нуб, ассемблером владею на ноль. Нужно написать прогу, которая использовала бы функции переписки сектора памяти, ибо задание "Выполните отладку процедур, предназначенных для переписки сектора." Можно пожалуйста по подробнее объяснить в чем суть, как это написать и если можно с кодом и пару скринов...

Решение задачи: «Переписка сектора памяти»

textual
Листинг программы
; Disp_sec.asm
org 100h
jmp Disp_sector
Sector: times 16 db 10h
       times 16 db 11h
       times 16 db 12h
       times 16 db 13h
       times 16 db 14h
       times 16 db 15h
       times 16 db 16h
       times 16 db 17h
       times 16 db 18h
       times 16 db 19h
       times 16 db 1Ah
       times 16 db 1Bh
       times 16 db 1Ch
       times 16 db 1Dh
       times 16 db 1Eh
       times 16 db 1Fh
Disp_sector:
        xor dx,dx
        mov cx,16
.M:     call Disp_line
        call Send_crlf
        add dx,16
       lopp .M
        int 20h
;
Disp_line:
        push bx
        push cx
        push dx
        mov bx,sx
        mov cx,16
.M:     mov dl,[Sectoe+bx]
        call Write_byte_hex
        mov dl,''
        call Write_char
        int bx
        loop .M
        pop dx
        pop cx
        pop bx
        ret
        %include 'Video_io.asm'
        %include 'Cursor.asm'

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

Список переменных и их значений:

  1. sx - байт, содержащий номер сектора (10h - 1Fh)
  2. bx, cx, dx - регистры общего назначения, используемые для работы с адресами и данными
  3. Sectoe - директория, содержащая сектор, который необходимо отобразить (значение зависит от номера сектора)
  4. Video_io.asm, Cursor.asm - заголовочные файлы, включающие код для работы с видеопамятью и курсором Код выполняет следующие действия:
  5. Задается начальный адрес сектора (100h) и выполняется переход на начало сектора (Disp_sector).
  6. В цикле 16 раз выводится по одному байту из сектора, начиная с первого (Disp_line).
  7. Каждый байт выводится в шестнадцатеричной системе счисления (Write_byte_hex).
  8. После вывода каждого байта выводится символ возврата каретки (CR), который перемещает курсор на начало следующей строки (Send_crlf).
  9. После вывода всех байтов сектора выполняется переход на начало следующего сектора (int 20h).

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


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

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

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