Tasm: не работает программа - Assembler

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

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

Почему не работает программа?
ideal
model small
stack 512
MACRO M_Exit 
mov ah, 04Ch
int 21h ; Виклик переривання DOS,
ENDM M_Exit
 
MACRO M_Init
mov ax, @data
mov ds, ax ; ds <- ax
mov es, ax ; es <- ax
ENDM M_Init
 
DATASEG
ar_ans DW 0h, 0h, 0h, 0h ;Оголошення двовим?рного масиву
DW 0h, 0h, 0h, 0h
DW 0h, 0h, 0h, 0h 
DW 0h, 0h, 0h, 0h
 
CODESEG
Start:
M_Init
;?н?ц?ал?зац?я елемент?в масиву, пряма адресац?я
mov ax, 0cdcdh ;
mov [ds:[0]], ax ; Сегмент даних починається з масиву ar_ans
mov [ds:[2]], ax ; Записуємо у нульовий елемент значення 0cdcdh
mov [ds:[4]], ax ; Зб?льшуючи значення ефективної адреси,записуємо ?нш? елементи
mov [ds:[6]], ax ;
mov [ds:[8]], ax ;
mov [10], ax ;
mov [12], ax ;
mov [14], ax ;
mov [16], ax ;
mov ax, [ds:[0]] ; Сегмент даних починається з масиву ar_ans
; Записуємо ar_ans[0][0] до ах
push ax ;Заносимо зм?ст ar_ans[0][0] до стеку через ах
mov ax, [ds:[2]] ; Розм?р елементу слово, отже робимо зсув на 2,
; Записуємо ar_ans[0][1] до ах
push ax ; Записуємо до стеку зм?ст ar_ans[0][1] через ах.
mov ax, [ds:[4]] ; Аналог?чно розм?щаємо вс? елементи до стеку.
push ax
mov ax, [ds:[6]]
push ax
mov ax, [ds:[8]]
push ax
mov ax, [ds:[10]]
push ax
mov ax, [ds:[12]]
push ax
mov ax, [ds:[14]]
push ax
mov ax, [ds:[16]]
push ax
mov bp, 001FEh
mov ax, 0FACEh ; Записуємо значення яким будемо ?н?ц?ал?зувати стек
mov cx, 00000h ; Обнуляємо СХ
mov [bp], cx ; Обнуляємо д?лянку стеку [ss]:[bx]
mov [bp], ax ; Записуємо у д?лянку стеку за адресою [ss]:[bx]
; значення 0FACEh
;Базово-?ндексна адресац?я
mov bp, 001F0h ; Записуємо ефективну адресу
; вершини стеку
mov si, 4 ; Записуємо номер потр?бного елементу стеку
mov cx, [BP+SI+2] ; Зчитуємо номер потр?бного елементу до рег?стру СХ
END Start

Решение задачи: «Tasm: не работает программа»

textual
Листинг программы
mov  ah, 4Ch
 int     21h

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

  1. ah - это регистр ввода/вывода, который содержит код функции, которую нужно выполнить
  2. 4Ch - это значение, которое помещается в регистр ah, и означает функцию 4Ch (найти и открыть файл)
  3. int 21h - это команда, которая выполняет функцию, указанную в регистре ah, и возвращает в программу управление после выполнения функции
  4. В данном случае, функция 4Ch должна открыть файл, указанный в регистре dx или si, но в данном коде эти регистры не используются
  5. Если файл не найден или не может быть открыт, функция 4Ch возвращает код ошибки, который можно проверить с помощью условного оператора
  6. В данном коде нет проверки на ошибки, поэтому если функция 4Ch не может выполнить запрос, программа продолжит работу с неправильными данными, что может привести к непредсказуемым результатам

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

15   голосов , оценка 3.733 из 5