Member 13016063 Ответов: 1

Преобразование кода psceusdo в язык ассемблера 8086


i=0
while (i<n)
{
if (a==0){
b[i]=c[i]+1;
i++;
a=1;
}
else{
b[i]=c[i+1]+1;
i++;
a=0;
}
}


Что я уже пробовал:

.MODEL small
.STACK
.DATA
N db 4h 
c db 1h,2h,3h
b db 1h,2h,3h,4h
.CODE
.STARTUP
MOV CX,00h
mov cl,N 
mov bl,offset c
clc 
addition:
 mov al,bl
 adc al,0h
 clc
 loop1:
  cmp al,0
 je next1
 next1: add al,1
 mov B[di],al
 inc si 
 inc di
 mov al,1

 loop2:
 cmp al,0
 jnz next2
next2: add al,1
 mov B[di],al
 inc si
 inc di
 mov al,0

 loop addition 
 .EXIT
 END

OriginalGriff

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

Richard MacCutchan

В любом случае, это просто вопрос принятия каждого шага и реализации его в ассемблере. Не слишком сложно для студента бакалавриата.

1 Ответов

Рейтинг:
2

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.