Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Прочие языки программирования > Assembler
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.12.2012, 21:50
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию Сложение двух двойных слов

Я написал программу на ассемблере, которая должна складывать два двойных слова. Программа запускается но ничего не отображает.
Код:
.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  
Старый 30.12.2012, 22:06
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Скомпилированный файл покажи, в дебаге посмотрю...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 30.12.2012, 22:31
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Это файл с расширением OBJ?
Ответить с цитированием
  #4  
Старый 30.12.2012, 22:52
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Ничего не отображает - а должно? Где вывод? И зачем инт 9, это же аппаратное прерывание всегда было.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 30.12.2012, 22:57
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Я не знаю. А что вы думаете?
Ответить с цитированием
  #6  
Старый 30.12.2012, 23:05
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Мда. Мог бы и разобраться в коде, который выкладываешь. 9е прерывание дос вроде на клавиатуру направляет, вызывать его руками бесполезно, как любое другое из аппаратных (с номером меньше 16). Для вывода символа есть видеосервис биос (16 номер) и функции дос (33 номер). Подробнее в гугле. Число перед выводом надо руками превратить в строку. Алгоритмы опять же можно найти в гугле, на си/делфи запросто, а потом перевести на асм.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 31.12.2012, 16:15
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Мда. Мог бы и разобраться в коде, который выкладываешь. 9е прерывание дос вроде на клавиатуру направляет, вызывать его руками бесполезно, как любое другое из аппаратных (с номером меньше 16). Для вывода символа есть видеосервис биос (16 номер) и функции дос (33 номер). Подробнее в гугле. Число перед выводом надо руками превратить в строку. Алгоритмы опять же можно найти в гугле, на си/делфи запросто, а потом перевести на асм.
По моему, вы намекаете, что у меня кривые руки. Я находил разные варианты, но все они не работали. Мне нужен код для конкретного случая.
Ответить с цитированием
  #8  
Старый 31.12.2012, 17:28
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я намекаю не на кривые руки, а на нежелание разобраться в сабже. Даже если почему-то не нашли код перевода числа в строку, его можно запросто придумать. В этом суть программирования, а не в копипасте чужого кода. А вывод есть в одной из функций инт 21х, о чем можно узнать из любого справочника. Если в яндексе набрать "прерывания дос и биос" то первой или второй ссылкой будет нормальный справочник.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #9  
Старый 31.12.2012, 20:32
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Я изменил код вот так:
Код:
.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
                mov      ah,09h
                int 21h
                mov      ax,4C00h
        		 int 21h               	; функция DOS "завершить программу"
message         db       "53687091",0Dh,0Ah,'$'
                end start
Я запустил программу, но у меня появляется надпись s linear space <386>. Что это означает?
Ответить с цитированием
  #10  
Старый 31.12.2012, 22:02
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Ты не говоришь прерыванию, что выводить. В одном из регистра (не помню в каком) должен быть адрес строки. Иначе как дос узнает, что надо вывести? А по поводу выводимого сообщения - либо это бред, вызванный неинициализированным регистром, либо ты что-то не так описал.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #11  
Старый 31.12.2012, 22:53
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Мне нужно было отобразить результат 3333333h. В десятеричной системе счисления это 53687091.
Ответить с цитированием
  #12  
Старый 31.12.2012, 23:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Мне вот только одно интересно, нах кому нужна программа под DOS?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 31.12.2012, 23:23
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Это мне задали в университете.
Ответить с цитированием
  #14  
Старый 31.12.2012, 23:23
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Кому-кому, преподу в институте. ТС - ну а прерывание-то как узнает, что выводить надо?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #15  
Старый 01.01.2013, 16:27
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Я вас не понимаю.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter