WMmail.ru - сервис почтовых рассылок

четверг, 6 октября 2011 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Снижение цен на ступицы КАМАЗ от 5% до 30%
  
  
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2744
• повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2624
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2152
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1478
Дата выхода:06.10.2011, 21:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:198 / 61
Вопросов / ответов:1 / 1

Консультация # 184125: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Задание: Нужно построить схему алгоритма решения задачи, а затем написать программу с подробными комментариями на ассемблере. Переслать строку символов, введенных с клавиатуры, из одного сегмента данных в другой и отобразить на экран с использованием видео буфера. Прогр...


Консультация # 184125:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Задание:
Нужно построить схему алгоритма решения задачи, а затем написать программу с подробными комментариями на ассемблере. Переслать строку символов, введенных с клавиатуры, из одного сегмента данных в другой и отобразить на экран с использованием видео буфера. Программа должна состоять из сегментов данных, кода и стека.

Дата отправки: 01.10.2011, 14:25
Вопрос задал: Ermak (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 382071!
Такой "схемы алгоритма решения задачи" достаточно?



Сама программа...
Для вывода используется прямая запись в видеобуфер
Для ввода строки (и ее отображения при вводе!) - функция 0ah.
Для согласования позиции курсора с выводимой информацией
применена функция установки позиции курсора по смещению в видеобуфере

Код :
;Переслать строку символов, введенных с клавиатуры,  ;из одного сегмента данных в другой и отобразить на экран  ;с использованием видео буфера.   stk segment para stack ;Сегмент стека с выравниваем на 10h (para)  dw 256 dup (?) stk ends  Color equ 07h  ;атрибут (цвет) выводимых символов  data1 segment sEnter db 'Enter string: ',0 ;Все сообщения в сегменте data1 sResult db 'Duplicate string: ',0 sAny db 'Press any key',0  ;данные для ввода строки с помощью функции 0ah max1 db 128  ;размер буфера cnt db ?  ;длина введенной строки str1 db 128 dup (?) ;сама введеная строка data1 ends  data2 segment str2 db 128 dup (?) ;сюда запишем введенную строку data2 ends  code segment assume cs:code, ds:data1, ss:stk main proc  mov ax, data1 ;ds = data1  mov ds, ax  mov ax, 0b800h ;es = video  mov es, ax          mov ax,3  ;необходимо под ХР для прямой         int 10h    ;записи в видеобуфер   lea si, sEnter ;Enter string:  xor di, di  ;в начале первой строки  call Print  ;выводим  call SetPos  ;установим позицию курсора за строкой      ;ввод строки при помощи функции 0ah  lea dx, max1 ;адрес буфера в dx  mov ah, 0ah  ;номер функции ввода строки  int 21h  ;вызов функции  xor bx, bx  ;запишем в конце строки 0,(там сейчас код 0dh)  mov bl, cnt  ;длина ввеленной строки  mov str1[bx], 0 ;пишем 0      ;скопируем введенную строку в сегмент data2  push es  ;сохраним сегмент видео  mov ax, data2 ;es = data2  mov es, ax  lea si, str1 ;ds:[si] - исходная строка  lea di, str2 ;es:[di] - сюда копируем  lea cx, [bx+1] ;cx=bx+1 - длина строки + завершающий 0  rep movsb  ;копируем  pop es  ;восстановим сегмент видео   lea si, sResult ;Duplicate string:  mov di, 80*2 ;в начале второй строки  call Print  ;выводим      ;выведем строку из сегмента data2  push ds  ;сохраним сегмент data1  mov ax, data2 ;ds = data2  mov ds, ax  lea si, str2 ;выводим строку ds:[si]  call Print  pop ds  ;восстановим сегмент data1   lea si, sAny ;выводим строку Press any key  mov di, 2*80*2 ;в начале третьей строки  call Print  ;выводим  call SetPos  ;установим курсор за строкой   mov ah, 0  ;ждем "any key"  int 16h   mov ax, 4c00h  int 21h main endp  print proc   ;вывод на экран строки ds:[si]     ;по адресу es:[di]  mov ah, Color ;атрибут (цвет) printLoop:  lodsb   ;очередной  cmp al, 0  ;конец строки?  je printRet  stosw   ;выводим  jmp printLoop printRet:  ret print endp  SetPos proc   ;установка позиции курсора      ;в нулевой странице видеопамяти     ;на входе di - смещение в видеопамяти  mov ax, di  ;позиция в видеобуфере  xor dx, dx  ;подготовимся к делению  mov cx, 80*2 ;число байт на одну строку  div cx  ;dx:ax / cx  shr dl, 1  ;dl = колонке  mov dh, al  ;dh = строке  mov ah, 2  ;функция установки позиции курсора  mov bh, 0  ;0 страница  int 10h  ret SetPos endp  code ends  end main

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 02.10.2011, 00:15
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    05 октября 2011, 20:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    26 сентября 2011, 08:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    25 сентября 2011, 10:14

Все выпуски рассылки
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Отношения между мужчиной и женщиной
Группа об отношениях между мужчиной и женщиной. Для того, чтобы лучше понять мужчину, нужно узнать его психологию, знать о чём он говорит и что на самом деле имеет ввиду.
Темы: 7369   Участники: 6710
  Секреты здорового долголетия
Как сохранить здоровье, как сохранить память, умственную способность, как сохранить молодость? Как оставаться независимым? Как оставаться полезным своим...
Темы: 1369   Участники: 4417
  Крав-мага в России
В реальном бою нет правил. Побеждает тот, кто выживает… Крав-мага в переводе с иврита קרב מגע – «...
Темы: 20   Участники: 1049
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий