Сохранить массив результата в стеке

Тема в разделе "WASM.ASSEMBLER", создана пользователем voland95, 26 апр 2008.

  1. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    voland95
    Кончай "сотрясать воздух бесполезно" - бери ручку, отладчик и учебник в зубы и вперед.
    Я все написал в своем первом сообщении, остальное - это его разжевывание,
    что ты еще хочешь узнать.
     
  2. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    хочу исходник полностью!!!!
     
  3. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    хочу исходник под названием 13.exe!чтоб только в debug его осталось загнать(зато честно).
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    voland95
    В Beginners есть ветка про лабораторные работы :)
     
  5. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    непонял?можно адресочек полностью!
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    voland95
    Для "непонятливых" : ты сейчас пишешь в Список » WASM.ASSEMBLER (см. вверху),
    а если зайдешь в Список » WASM.BEGINNERS там одна из "верхних тем.
     
  7. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    срочно проверьте код!Выполняется ли сохранение результата в стеке!!!


    Код (Text):
    1. Код:
    2. .286; -  используются все команды для 16-разрядного процессора Intel
    3. .model small; - модель памяти (применяется в большинстве ЕХЕ под DOS)
    4. .data ; - всё вместе это стандартое начало ЕХЕ файла в TASM или MASM
    5. source db 01h,0afh,0fh,08h ;исходный массив
    6. dest db 4 dup(?);зарезервировано для нового массива
    7. .code
    8. start: mov ax,data
    9. mov ds,ax
    10. call voland; вызываем процедуру для обработки массива
    11. proc lab3
    12. push ss
    13. pop es; перенацеливаем дополнительный сегмент данных на стек (es=ss)
    14.         mov cx,4 ;счетчик элементов в массиве              
    15.         mov si,offset source
    16.         cld ; заполняем массив от первых адресов к последним
    17.         mov di,sp; указатель стека используем, как обычный регистр указатель
    18. ;(также как и bx, si, di)
    19. again: lodsb;mov al,ds:[si] si:=si+1 читаем данные из исходного массива
    20.          cmp al,0fh ;сравнение элемента с 0fh
    21.           je e      ;если равен ,то переход на метку е
    22.           jb a       ;если меньше, то - на а
    23.           sub al,0fh  ;вычитание
    24.           jmp e      ;переход на е
    25.      a: add al,0fh;сложение
    26.      e: stosb;сохранение элемента из регистра-аккумулятора al/ax/eax в последовательности (цепочке). mov es:[di],al inc di все равно что mov ss:[sp],al  и inc sp
    27.          loop again;конец цикла
    28.          sub sp,4; теперь стек снова указывает на начало преобразованного массива который мы затолкали в стек
    29. ret;конец цикла который мы затолкали в стек
    30. endp lab3;конец процедуры
    31. end start;конец программного модуля
    срочно проверьте код.Завтра сдавать!Выполняется ли сохранение результата в стеке!!!
     
  8. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    происходит ошибка или зацикливание не могу понять.работаю ТD 3.2
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    voland95
    Код (Text):
    1. start: mov ax,data
    2. mov ds,ax
    3. ...
    4. call voland; вызываем процедуру для обработки массива
    5. ...
    6. mov ax,4C00h
    7. ret 21h; выход из программы
    8. proc voland; если уж вызываешь процедуру смотри как она названа voland или lab3
     
  10. voland95

    voland95 New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    28
    Mikl__
    опечатка ссори.я сдал задачу спс!