Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 11:57   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию -=Разбор кода (С++ и Ассемблерная вставка)=-

Доброе время суток. Я студент,ЗАО.

Проблема вот собственно в чем. Сделал контрольную преподавателю, а он пристал с просьбой расказать построчно программу.
Вот сама программа :
Код:
Вариант №15 : Заданна строка. Сформировать другую строку с обратным порядком букв.
#include <iostream>
#include <locale>
 
using namespace std;
  
int main()
{
setlocale(LC_ALL,"rus"); // локализация

const int MAX = 80; //размер массива
char str [MAX]; //строка
cout << "\nВведите строку: "; //получить строку
cin.get(str,MAX);
_asm
{
xor cx,cx
xor ax,ax
xor bx,bx ;bx - индекс очередного символа для обработки (равен cx(уменьшается) при считывании и увел. при записи в строку)
mov cl,reallen ;в cx - размер строки для цикла обработки

loopLabel:
 push bx ;сохраняем индекс записи
 mov bx,cx ;и записываем в bx индекс чтения
 mov al,string[bx]
 pop bx
 mov stringOut[bx],al ;запись в выходную строку
 inc bx ;увел. индекс чтения
 dec cx
 cmp cx,0
jge loopLabel

OutStr stringOut ;вывод результата на экран
}
cout <<str <<endl;
system("PAUSE");
return 0;
}

И вот какие строки непонятны :

Код:
xor cx,cx
xor ax,ax
xor bx,bx ;bx - индекс очередного символа для обработки (равен cx(уменьшается) при считывании и увел. при записи в строку)
mov cl,reallen ;в cx - размер строки для цикла обработки

loopLabel:
 push bx ;сохраняем индекс записи
 mov bx,cx ;и записываем в bx индекс чтения
 mov al,string[bx]
 pop bx
 mov stringOut[bx],al ;запись в выходную строку
 inc bx ;увел. индекс чтения
 dec cx
 cmp cx,0
jge loopLabel

OutStr stringOut ;вывод результата на экран
Собственно вся ассемблерная вставка. Решать я ничего не прошу, просто я чайник в ассемблере. Обьясните пожалуйста мне строки к которым нет комментариев.

Последний раз редактировалось MeTeOpA; 26.12.2010 в 12:53.
MeTeOpA вне форума Ответить с цитированием
Старый 26.12.2010, 16:46   #2
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

up! так сказать...

Код:
xor cx,cx
xor ax,ax
xor bx,bx ;bx - индекс очередного символа для обработки (равен cx(уменьшается) при считывании и увел. при записи в строку)
mov cl,reallen ;в cx - размер строки для цикла обработки

loopLabel:
 push bx ;сохраняем индекс записи
 mov bx,cx ;и записываем в bx индекс чтения
 mov al,string[bx]
 pop bx
 mov stringOut[bx],al ;запись в выходную строку
 inc bx ;увел. индекс чтения
 dec cx
 cmp cx,0
jge loopLabel

OutStr stringOut ;вывод результата на экран
MeTeOpA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблерная вставка Serg12 Помощь студентам 5 04.05.2017 19:43
Ассемблерная вставка _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 5 18.09.2010 14:31
Ассемблерная вставка! treki Помощь студентам 0 16.06.2010 00:15
Ассемблерная вставка в Delphi Mixasik Общие вопросы Delphi 3 30.01.2010 00:45
Ассемблерная вставка Arigato Общие вопросы Delphi 1 25.10.2009 21:47