Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 11.10.2017, 18:10   #1
Николай Н.
Новичок
 
Регистрация: 11.10.2017
Сообщений: 3
Репутация: 10
По умолчанию Как подкорректировать программу?

Вот написал программу, но с Ассемблером у меня беда. Плохо его понимаю.
Подкорректируйте пожалуйста если ошибки есть.
Задание
DB,DW,DD с одним операндом константой
32-разрядные данные и смещения в сегменте
Адресация операндов памяти. Индексная адресация со смещением (Val1[eax], Val1[edi],Val1[eex+4],[eax+6] etc.)
Машинные команды
Lahf
Dec reg
Cmp reg, mem
And mem,reg
Xor mem,imm
Jmp (относительная адресация), Где reg - 8 или 32-разрядные РЗП
mem - адрес операнда в памяти
imm - 8 или 32-разрядные непосредственные данные (константы)


Мой код

Код:

;.386
Data Segment
     datas db 'string'
     Datab db 123
     dataW dw 0001011100001101b
     n = 10
Data ends
 
Code Segment
assume cs:code, ds: data
 
Jum:
      Lahf
 
      Dec byte ptr [bx + 1]
      dec word ptr [bp +2]
      dec word ptr [bp]
 
      Mul al
      Mul ax
      Mul bh
      Mul bx
 
      Xor al, al
      Xor ax, ax
      mov bx, n
      n = 15
        mov bx, n
 
      Lea ax, [bx+1h]
 
      Jnbe Jend
 
      Adc word ptr dataS[si+2], ax
      Adc word ptr dataW[di+2], ax
adc dataw[di], 023a5H
adc daTaS[si+3], n
 
Mov ah, 200
Mov ax, 023deH
Jnbe Jum
 
Jend:
Code ends
 
end Jum

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 11.10.2017 в 18:15.
Николай Н. вне форума   Ответить с цитированием
Старый 11.10.2017, 22:05   #2
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,486
Репутация: 311

icq: 359393755
По умолчанию

Чего то мне не совсем понятно что сделать то нужно? демонстрация операций чтоли?
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 11.10.2017, 23:47   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 966
Репутация: 657
По умолчанию

..судя по заданию - да!
__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Старый 12.10.2017, 13:54   #4
Николай Н.
Новичок
 
Регистрация: 11.10.2017
Сообщений: 3
Репутация: 10
По умолчанию

Можете подкорректировать, в соответствии с машинными командами?
Николай Н. вне форума   Ответить с цитированием
Старый 12.10.2017, 14:45   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 966
Репутация: 657
По умолчанию

..а что корректировать, если нету алгоритма и прога ничего не делает?
Если просто инструкции - то вроде всё правильно.
Насчёт маш\кодов - запусти отладчик 'DEBUG' и получишь все опкоды:
Код:

C:\debug
-a
139E:0100   lahf
139E:0101   dec  cx             ; Dec reg
139E:0102   cmp  ax,[500]       ; Cmp reg, mem
139E:0106   and  [100],dx       ; And mem,reg
139E:010A   xor  [200],bx       ; Xor mem,imm
139E:010E
-r
139E:0100   9F               LAHF
139E:0101   49               DEC     CX
139E:0102   3B 06 00 05      CMP     AX,[0500]      DS:0500=0000
139E:0106   21 16 00 01      AND     [0100],DX      DS:0100=499F
139E:010A   31 1E 00 02      XOR     [0200],BX      DS:0200=0000
            |         |
            +---------+-----> машинные команды

__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Старый 12.10.2017, 19:56   #6
Николай Н.
Новичок
 
Регистрация: 11.10.2017
Сообщений: 3
Репутация: 10
По умолчанию

Подскажите, а как у вас получилось в командной строке весь листинг получить? Я когда пишу D:\debug program.com -a появляется только строка 139E:0100

А как получить полностью листинг?
Николай Н. вне форума   Ответить с цитированием
Старый 12.10.2017, 20:48   #7
Black Fregat
Программист
Форумчанин
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 391
Репутация: 283
По умолчанию

Откройте для себя Hiew: http://www.hiew.ru/indexr.html
Black Fregat на форуме   Ответить с цитированием
Старый 13.10.2017, 04:43   #8
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 966
Репутация: 657
По умолчанию

Цитата:
Сообщение от Николай Н. Посмотреть сообщение
появляется только строка 139E:0100
..это ожидание ввода команд.
пишите свои инструкции, каждую подтверждая Enter-ом.
когда все команды введены, ещё раз Enter и потом "Т" - трассировка, которая покажет весь листринг (ненужное -регистры- я специально убрал).

А вообще DEBUG - это отстой и прошлый век! он не понимает большинство инструкций и работает только с 16-битными регистрами. из консольных\32-битных есть ещё GRDB - усовершенствованный дебуг: может ставить точки-останова, дружит с FPU, записывает действия в лог, и прочие навороты.

Во-всех консольных приложениях справка вызывается клавишей(?).
например у дебуга она такая:
Код:

-?
assemble     A [адрес]
compare      C диапазон адрес
dump         D [диапазон]
enter        E адрес [список]
fill         F диапазон список
go           G [=адрес] [адреса]
hex          H значение1 значение2
input        I порт
load         L [адрес] [диск] [превый_сектор] [число]
move         M диапазон адрес
name         N [путь] [список_аргументов]
output       O порт байт
proceed      P [=адрес] [число]
quit         Q
register     R [регистр]
search       S диапазон список
trace        T [=адрес] [значение]
unassemble   U [диапазон]
write        W [адрес] [диск] [первый_сектор] [число]

__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Ответ



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подкорректировать программу,паскаль Карина Т_Т Помощь студентам 6 13.03.2014 22:43
подкорректировать программу lexa_7up Паскаль 9 24.12.2011 15:54
Необходимо подкорректировать программу на ассемблере!!! Иван1223 Помощь студентам 0 12.04.2011 19:59
Подкорректировать программу wrmarw Паскаль 5 04.05.2010 14:06
Можно ли подкорректировать программу, имея только ехе-шник? dmitriy777 Помощь студентам 5 22.02.2010 12:52




14:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru