Запись первого элемента массива в РОН - Assembler

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

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

Доброго! Начал потихоньку осваивать асм. Читаю книгу Зубкова: Ассемблер для DOS, Windows и Linux и в ней черным по белому написано
text_string db 'Hello world!' Первые 12 байт содержат ASCII-коды символов строки «Hello world!», и переменная text_string указывает на первую букву в этой строке, так что команда mov al,text_string считает в регистр AL число 48h (код латинской буквы H).
Написав по образу и подобию свою небольшую программку и прогнав ее через Tubdo Debugger заметил, что данные находятся в памяти со смещением 0100, а в регистр AL в итоге записался какой то мусор. Вот код моей программы:
; Данные
data segment
        text     db      "Hello!"
data ends
 
; Начало программы
code    segment
        assume cs:code, ds: data
        
start:  mov al, text
 
code ends
        end     start
Читал что dos в область область памяти до $0100 записывает служебную информацию. Собственно вопрос: Почему переменная text указывает на область памяти с адресом $0000, а сами данные располагаются в памяти, начиная с адреса $0100?

Решение задачи: «Запись первого элемента массива в РОН»

textual
Листинг программы
mov ax,@data
mov ds,ax
mov es,ax

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

  1. Переменная ax используется как регистр для хранения данных и команд
  2. Переменная @data используется как метка сегмента данных
  3. Команда mov используется для перемещения данных между регистрами и переменными
  4. Команда ds используется для указания сегмента данных
  5. Команда ax используется для указания регистра ax
  6. Команда es используется для указания регистра es

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


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

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

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