Переписка сектора памяти - 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'
Объяснение кода листинга программы
Список переменных и их значений:
- sx - байт, содержащий номер сектора (10h - 1Fh)
- bx, cx, dx - регистры общего назначения, используемые для работы с адресами и данными
- Sectoe - директория, содержащая сектор, который необходимо отобразить (значение зависит от номера сектора)
- Video_io.asm, Cursor.asm - заголовочные файлы, включающие код для работы с видеопамятью и курсором Код выполняет следующие действия:
- Задается начальный адрес сектора (100h) и выполняется переход на начало сектора (Disp_sector).
- В цикле 16 раз выводится по одному байту из сектора, начиная с первого (Disp_line).
- Каждый байт выводится в шестнадцатеричной системе счисления (Write_byte_hex).
- После вывода каждого байта выводится символ возврата каретки (CR), который перемещает курсор на начало следующей строки (Send_crlf).
- После вывода всех байтов сектора выполняется переход на начало следующего сектора (int 20h).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д