Автор Тема: Девушка просит помощи у мудрых программистов(дан массив Х[-10...10] X dw...)  (Прочитано 1456 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tomogochi

  • Коллежский регистратор
  • *
  • Сообщений: 5
  • Репутация: 0
Добрый день! Не могли бы вы мне помочь.нужно написать две маленькие программки.достаточно только сегмент кода,наверное.
1. дан массив Х[-10...10] X dw 21 dup ?, а в регистре DI хранится число i. написать программу,которая бы выполняла действие X:=X[0]+1.
2. в стеке хранится не менее двух слов.написать программу,удаляющую второе(сверху) слово,не меняя значения регистров.


всем,кто откликнется на мою просьбу,заранее спасибо.   :'(

Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
1)
Если x:=x[0]+1 то вроде так для масм/тасм
Код: (asm) [Выделить]
lea SI, x
imul DI, 2
mov AX, word ptr [x]
inc AX
add SI, DI
mov word ptr [SI], AX
2)
Идея:
Сохраняем регистр
Берем следующее значение в стеке(бывшее первое слово)
Перекидываем его на место второго
Восстанавливаем регистр
Прибавляем стек
Код: (asm) [Выделить]
push AX
mov AX, word ptr [ESP+2]
mov word ptr [ESP+4], AX
pop AX
add ESP, 2
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/

Оффлайн Tomogochi

  • Коллежский регистратор
  • *
  • Сообщений: 5
  • Репутация: 0
Veliant,спасибо.Попробуем так.Сложно это всё для меня как-то.
Ещё раз спасибо за помощь. :-***

Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
ошибочка у меня массив с -10 поэтому перед тем как считывать надо еще к началу 10*2 прибавить т.е. mov AX, word ptr [x+10*2]
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/