Помогите с программированием на assembler #2

Everything you can't fit into other forums
  • Есть такой сайт - http://www.wasm.ru . На нём, в частности, есть форум, на котором, в частности, есть тема http://www.wasm.ru/forum/viewtopic.php?id=17088 . Куда и имеет смысл постить вопросы о лабораторных работах по языку ассемблера. (Задача совершенно явно учебная, в реальной жизни встретиться не может, но для развития мозга вполне полезная. Если, конечно, решать самостоятельно.) А этот форум посвящён операционной системе Колибри.
    Ушёл к умным, знающим и культурным людям.
  • Какая то извращенная учебная программа... Скорее всего у препода есть прикладное применение к это задаче, (ограниченный набор возможных опкодов, в устовиях попытки переполнения стека, вполне возможная задача) а самому решать не охота...

    Gargo это уже не первая "странная" задачка от тебя, методичку отсканить можешь??? Просто интересно посмотреть на другие задания. И вообще, в каком ВУЗ`е это происходит????
  • я могу выложить в инет старую методичку, но там сопадают только первые две лабы. 3ю взял с какого-то листика, 4я сказал, что одна на всех - бери у того, кто ее уже брал. Выкладывать ту методичку?
  • mov al,bl
    ----------
    mov al,255 ; включаем все биты в al
    and al,bl ; выключаем ненужные биты, т.е. накладываем маску, или присваиваем значение которое в bl.

    mov ax, bx
    ----------
    mov al,255 ; включаем все биты в al
    shl ax,8 ; перемещаем значение в ah
    mov al,255 ; включаем все биты в al
    ; все в ax у нас 0xffff или -1
    and ax,bx ; выключаем ненужные биты, т.е. накладываем маску.
  • Можно перефразировать одну извесную цитату:

    ххх: это форум о Колибри?
    ууу: да
    ххх: как мне решить задание на ассемблере?
    Из хаоса в космос
  • <Lrz> wrote:mov al,bl
    ----------
    mov al,255 ; включаем все биты в al
    and al,bl ; выключаем ненужные биты, т.е. накладываем маску, или присваиваем значение которое в bl.

    mov ax, bx
    ----------
    mov al,255 ; включаем все биты в al
    shl ax,8 ; перемещаем значение в ah
    mov al,255 ; включаем все биты в al
    ; все в ax у нас 0xffff или -1
    and ax,bx ; выключаем ненужные биты, т.е. накладываем маску.
    Пасиб, правда до mov al, bl я уже додумался, равно как и до or al,bl.
    Главная сложность для меня - реализация стека и всяких там call ret


    А кто советует мне отправиться на wasm.ru - тот пусть сначала попробует зарегиться там.

    И еще одно, в этот раз я ветку разместил по адресу: "то что не вошло в другие категории". И хоть очень посредственно, но относится к колибри
  • У тебя нет в списке команды or.
    Остальные задания решай сам.
    call
    ----------

    Code: Select all

    mov al,255 ; включаем все биты в al
    shl ax,8 ; перемещаем значение в ah
    mov al,255 ; включаем все биты в al
    and ax,return ; в ax адрес возврата
    jmp subr      ; прыгаем на нашу подпрограмму
    return:       ; это куда мы вернемся
    ;любая последовательность команд
    subr:         ; начала подпрограммы
    ; тут может располагаться любая последовательность команд, которая не приведет к изменению регистра ax
    jmp ax        ; вернемся на адрес который у нас в ax
  • Вообще-то я "там" зарегистрирован и каких-либо сложностей при регистрации не помню. Естественно, с того момента что-то могло измениться, но страница регистрации выглядит вполне нормально.
    Ghost
    Угу, и ограничение 0/1/255 на второй операнд mov - потому что mov с прочими значениями работает нестабильно, а вовсе не для того, чтобы показать формирование числа по битам.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Человек не врет, я даже свой старый пароль восстановить не смог, когда пару месяцев назад пытался это сделать. Заново региться пытался тоже. Как результат просто забил, хотя перед этим письмо отсылал администратору.
  • <Lrz> wrote:У тебя нет в списке команды or.
    Остальные задания решай сам.
    call
    ----------

    Code: Select all

    mov al,255 ; включаем все биты в al
    shl ax,8 ; перемещаем значение в ah
    mov al,255 ; включаем все биты в al
    and ax,return ; в ax адрес возврата
    jmp subr      ; прыгаем на нашу подпрограмму
    return:       ; это куда мы вернемся
    ;любая последовательность команд
    subr:         ; начала подпрограммы
    ; тут может располагаться любая последовательность команд, которая не приведет к изменению регистра ax
    jmp ax        ; вернемся на адрес который у нас в ax
    ну так елки, x1 or x2 = not(not(x1) and not(x2))

    а про wasm.ru - страница выглядит нормально, регистрируешься, на ящик письма не приходит с паролем, а когда пытаюсь отправить письмо по адресу администратора - пишет то ли ошибку в этом адресе, то ли что адрес не существует. Если кто может, разместите там копию задания
  • Кстати, а в коде, реализующем call, ругается, что ax и return разного размера
  • Сообщение удалено
    Last edited by Rock_maniak_forever on Sun Nov 22, 2009 4:31 am, edited 1 time in total.
  • Такой код собирается fasm 1.69.07 или 1.69.10. Если сделать jmp eax можно перейти неизвестно куда.

    Code: Select all

    use32 ;/ use16 если use16 то код получается на 3 байта короче.
    start:
    
    mov al,255 ; включаем все биты в al
    shl ax,8 ; перемещаем значение в ah
    mov al,255 ; включаем все биты в al
    and ax,return ; в ax адрес возврата
    jmp subr      ; прыгаем на нашу подпрограмму
    return:       ; это куда мы вернемся
    ;любая последовательность команд
    subr:         ; начала подпрограммы
    ; тут может располагаться любая последовательность команд, которая не приведет к изменению регистра ax
    jmp ax        ; вернемся на адрес который у нас в ax
  • 1)eax использовать нельзя
    2)использую tasm
    3)можно ли использовать следующее:
    and ax, offset return
  • Who is online

    Users browsing this forum: No registered users and 13 guests