|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.02.2008, 19:05 | #1 |
Пользователь
Регистрация: 28.02.2008
Сообщений: 13
|
Assembler
Есть алгоритм по которума нужно произвести операции. Т.к. препод ничего не объяснил пришлось разбираться по методичке в итоге получилась прога, но она не работает.Объясните пожалуйста, где ошибка!
;Сегменты не более 64 Кб. .Model small ;сегмент стека Sseg SEGMENT 'stack' db 256 dup(?) Sseg ends ;сегмент данных Dseg SEGMENT 'data' x1 db 7 ;-9 x2 dw C5F7 ; 50679 x3 dw 240A ;-56310 x4 dw 15FF ; 5631 rez1 dw ? rez2 dw ? rez3 dw ? rez4 dw ? rez5 dw ? Dseg ends ;Сегмент кода Cseg SEGMENT 'code' Assume CS:Cseg, DS:Dseg, SS:Sseg ;Основная программа Main PROC FAR ;Подготовка к возврату в операционную систему PUSH DS Mov AX,0 PUSH AX ;Настроим DS на наш сегмент данных Mov AX,Dseg Mov DS,AX ;Выполнение операций mov AL,x3 ;Запись x3 в регситр AL or x1 ;сложение по модуля 2 x1+x3 mov rez1,AX ;Сохранение результата в переменной rez1 mov AL,x3 ;Запись x3 в регистр AL sbc sub AL,x4 ;Вычитание x1-x4-CF mov rez2,AX ;Сохранение результата в переменной rez2 mov AL,x4 ;Запись x4 в регситр AL div x3 ;Умножение x4 на x3 mov rez3,AX ;Сохранение результата в переменной rez3 mov AL,x2 ;Запись x2 в регситр AL neg x2 ;Измение знака x2 mov rez4,AX ;сохранение результата в переменной rez4 mov AL,x1 ;Запись x1 в регситр AL imul x1 ;Умножение X1*X1 mov rez5,AX ;сохранение результата в переменной rez5 ;Передача управления первому оператору в PSP RET Main ENDP Cseg ends end Main Последний раз редактировалось Almost_Famous; 29.02.2008 в 19:08. |
29.02.2008, 19:08 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
ну так сюда её, будем разбираться
|
29.02.2008, 20:32 | #3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Ошибки синтаксические:
В основном путаете разрядность регистров и операндов. Про sub/sbb почитайте. вот код - исправленные места помечены !!! по крайней мере теперь компилируется, хотя смысл всех этих действий не понятен Код:
|
29.02.2008, 21:41 | #4 |
Пользователь
Регистрация: 28.02.2008
Сообщений: 13
|
Огромное спасибо!!!просто я изучаю ассемблер всего 3 дня...а в универе мало чего дают по этому предмету.Только я вот не могу понять, когда мы используем AX, а когда AL, подскажите пожалуйста, посмотрел книги, но там обще, а не конкретно. и еще маленький вопрсик:когда делаю команду tlink filename.asm /t выдается ошибка fatal:cannot generate COM file: stack segment present. Что надо сделать, чтобы этой ошибки не было?Заранее большое-большое спасибо!
|
29.02.2008, 21:54 | #5 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
Ты использовал параметр /t, но программа содержит сегмент стека, что не допускается для файлов .COM
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Assembler | oleh | Помощь студентам | 2 | 24.04.2008 19:45 |