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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2013, 12:12   #1
Feelnoobskill
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 13
По умолчанию Комментарии к ассемблерной вставке

Всем привет. Ищу помощи у знатоков ассемблера!Есть программный код
Код:
program p51;
uses crt;
var
   s1:string;
   s2:string;
   x:string;
   n:integer;
begin
 clrscr;
 writeln('Enter string');
 readln(s1);
 x:='';
 n:=length(s1);
asm
 mov si,offset word ptr s1
 mov bx,offset word ptr s2
 inc si
 inc bx
 xor dx,dx
 mov cx,ax
 mov dx,ax
 mov ah,byte ptr x
@beg2:
 mov al,[si]
 mov [bx],al  
 mov [bx+1],ah
 mov al,[si+1]
 mov [bx+2],al
 mov [bx+3],ah
 add bx,4
 add si,2
 loop @beg2
 add dx,n
 add dx,1
 mov bx,offset s2
 mov [bx],dl

end;
  writeln(s2);
  readln;
end.
Кто может помочь с написанием комментариев к ассемблерной вставки, а то я в ассемблере конкретный 0
Заранее спасибо большое!
Feelnoobskill вне форума Ответить с цитированием
Старый 04.06.2013, 13:49   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Feelnoobskill,
а задание-то как звучало в оригинале? Давай от этого отталкиваться, наверное, "создать строку, которая бы повторяла введенную строку, но после каждого символа бы следовал пробел?" Идея понятна, а реализация ассемблерной вставки с кучей ошибок, смысл комментировать ошибки?

Последний раз редактировалось Mikl___; 04.06.2013 в 14:23.
Mikl___ вне форума Ответить с цитированием
Старый 04.06.2013, 16:40   #3
Feelnoobskill
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 13
По умолчанию

Ну в идеале, должно быть так: Вводится строка, потом после каждого введенного символа в этой строке должно добавляться по 3 пробела
Feelnoobskill вне форума Ответить с цитированием
Старый 04.06.2013, 17:44   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Feelnoobskill,
ну если ТРИ пробела, тогда считай сам
Код:
mov ah,byte ptr x <-- здесь должен передаться пробел из переменной Х,
@beg2:
 mov al,[si]<-- копируем символ из строки s1 через регистр AL
 mov [bx],al  <--в строку s2
 mov [bx+1],ah <-- первый пробел, а где второй и третий пробелы?
 mov al,[si+1] <-- символ из строки
 mov [bx+2],al <-- символ в строку
 mov [bx+3],ah <-- очередной пробел после очередного символа
 add bx,4
 add si,2
 loop @beg2
Mikl___ вне форума Ответить с цитированием
Старый 05.06.2013, 00:18   #5
Feelnoobskill
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 13
По умолчанию

Хорошо, с этой частью я более-менее разобрался, не подскажите ли вы мне, что делает часть кода
Код:
xor dx,dx
 mov cx,ax
 mov dx,ax
и
Код:
 add dx,n
 add dx,1
 mov bx,offset s2
 mov [bx],dl
Feelnoobskill вне форума Ответить с цитированием
Старый 05.06.2013, 04:18   #6
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Feelnoobskill
Код:
xor dx,dx <-- dx:=0 хотя для чего, ведь двумя строчками ниже
DX получает значение из регистра AX
 mov cx,ax <-- вероятно в АХ длина строки s1, которую вернула функция length(s1)
 mov dx,ax <-- DX := AX = n
...
add dx,n <-- DX := DX + n если учесть что там уже есть n то DX = 2*n
 add dx,1 <-- DX := DX + 1 = 2n + 1
 mov bx,offset s2 <-- адрес начала строки s2
 mov [bx],dl <--  в самом первом байте Pascal-строки находится ее длина = 2n+1
только писал всё это какой-то двоешник
Mikl___ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
диапазон ассемблерной вставкой Medved.tolik Общие вопросы C/C++ 0 26.03.2012 16:58
Работа с массивом в ассемблерной вставке Fabeldyr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 27.10.2011 15:01
Метка в ассемблерной вставке EugenK Общие вопросы C/C++ 12 12.09.2011 13:49
запись данных в массив + цикл ассемблерной вставкой ahz4et Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 16.01.2011 11:10
Как вызвать функцию в ассемблерной вставке, зная адрес iceman2112 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.05.2010 13:38