![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Я написал программу на ассемблере, которая должна складывать два двойных слова. Программа запускается но ничего не отображает.
Код:
.model small ; модель памяти, используемая для ЕХЕ
.stack 100h ; сегмент стека размером в 256 байт
.data
X dd 1111111h ;определение данных
Y dd 2222222h
Z dd 3333333h
.code
start: mov ax,@data ; сегментный адрес строки message
mov ds,ax ; помещается в DS
mov bx, offset x
mov ax, [bx]
add ax,[bx+4]
mov [bx+8], ax
mov ax, [bx+2]
adc ax, [bx+6]
mov [bx+10], ax
int 09h
mov ax,4C00h
int 21h ; функция DOS "завершить программу"
end startВ чём проблема? Последний раз редактировалось Admin, 31.12.2012 в 12:06. |
|
#2
|
||||
|
||||
|
Скомпилированный файл покажи, в дебаге посмотрю...
|
|
#3
|
|||
|
|||
|
Это файл с расширением OBJ?
|
|
#4
|
||||
|
||||
|
Ничего не отображает - а должно? Где вывод? И зачем инт 9, это же аппаратное прерывание всегда было.
|
|
#5
|
|||
|
|||
|
Я не знаю. А что вы думаете?
|
|
#6
|
||||
|
||||
|
Мда. Мог бы и разобраться в коде, который выкладываешь. 9е прерывание дос вроде на клавиатуру направляет, вызывать его руками бесполезно, как любое другое из аппаратных (с номером меньше 16). Для вывода символа есть видеосервис биос (16 номер) и функции дос (33 номер). Подробнее в гугле. Число перед выводом надо руками превратить в строку. Алгоритмы опять же можно найти в гугле, на си/делфи запросто, а потом перевести на асм.
|