У меня есть следующее назначение: Напишите программу сборки HLA, которая запрашивает значение int8 для проверки, а затем печатает его в двоичном формате. Например, здесь будет вывод программы для различных введенных значенийДесятичное значение для двоичного кода в сборке высокого уровня (HLA)
Дай мне десятичное значение для печати: 15 15 0000_1111 Дай мне десятичное значение для печати: 7 7 является 0000_0111
(Подсказка: Там не является стандартным выходом, который печатает на двоичном выходе, поэтому вам нужно сделать это самостоятельно. Для этого вам нужно немного переместить бит в флаг переноса и напечатать 0 или 1, в зависимости от того, что вы найдете в Carry бит и повторите эту процедуру 8 раз, и все будет готово! В конце концов, мы научимся делать петлю, делая эту задачу намного менее страшной.)
(Второй совет: LAHF выталкивает бит Carry и все остальные флаги из регистра EFLAGS и в AH. Как программист Ассамблеи, у вас есть возможность замаскировать все биты, но тот, который вас интересует, с помощью И или ИЛИ.) Вот что я сейчас изучил в классе: http://homepage.smc.edu/stahl_howard/cs17/FileManager/referenceguides/referenceguideii.htm Мой код - это до сих пор, и я считаю, что это логическая ошибка, потому что независимо от того, какое число я ставлю, я просто получаю строку из 16 0.
begin program BinaryOutput;
#include("stdlib.hhf");
static
iDataValue : int8; // the value to inspect
begin BinaryOutput;
stdout.put("Gimme a decimal value to print: ", nl);
stdin.get(iDataValue);
mov(0, BH);
mov(iDataValue, BH);
stdout.put("Number in binary is: ", nl);
shl(1, BH); //1st
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //2nd
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //3rd
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //4th
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //5th
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //6th
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //7th
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
shl(1, BH); //8th
lahf();
and(%0000_0001, AH);
mov(AH, BH);
stdout.putb(BH);
end BinaryOutput;
Большое спасибо, это то, что мне нужно. – ecain