Не могу разобраться как сделать ввод двух чисел с клавиатуры с приглашением? Введите число1 Введите число2 дальше нужно будет произвести арифметические операции с введенными числами и вывести. Под NASm ассемблер.
если Вам под Windows то http://msdn.microsoft.com/en-us/library/ms684958(v=vs.85).aspx - ReadConsole / WriteConsole если под Dos то как-то так Код (Text): mov dx, offset message mov al, 9 int 21h ;это вывод сообщения mov dx, offset buffer mov ah, 0Ah int 21h ;в buffer будет СТРОКА, введенная пользователем P.S. это под masm написано, с nasm'ом не работал по религиозным соображениям, поэтому возможно нужно что-то подправить но идея такая
Примерно понятно. Не скажите что значит арифметическое смещение на шесть в право. Мне нужно посчитать вот такую формулу c=(a-b)*2 с арифметическим смещением на право на шесть.
видим арифметический сдвиг т.е. сдвиг на 6 бит вправо (один сдвиг деление на 2) посмотрите команду SAR
НЕ подскажете почему он не вычитает два числа. Выводит какие то символы или вообще нечего не выводит. Код (Text): SECTION .text org 0x100 ;создаем файл типа COm mov ah, 0x9 mov dx,chislo1 ; int 0x21 ;вызов DOS прерывания mov ah,0x01 ;DOS функция чтения символа int 0x21 ;вызов DOS прерывания mov dl,al ;копироание считанного символа в DL mov ah, 0x9 mov dx,chislo2 ; int 0x21 ;вызов DOS прерывания mov ah,0x01 ;DOS функция чтения символа int 0x21 ;вызов DOS прерывания mov cl,al ;копироание считанного символа в CL sub dl,cl mov dh,dl mov ah, 0x02 int 0x21 cmp dl, 0xD ;проверка нажат нет ENTER mov ah,0x4C ;заверщение программы int 0x21 SECTION .data chislo1 DB "Vvedite chislo1" , '$' chislo2 DB 0xd, 0xa, "Vvedite chislo2" , '$'
Вы читаете коды символов! а не числа Вам нужно преобразовать коды в символы (0х30 отнять, выполнить операцию и вывести на дисплей)
Когда Вы вводите 3<enter> то в буффер считывается насколько символов! (переход на новую строку) по-моему в этом дело
Извините не понял. По Enter у меня идет завершение программы. Когда ввожу число 1 меньше чем число 2 то выводи какой то символ. если наоборот то нечего не выводит.
Нашел в чем ошибка записывал в регистр dl и затирал его mov dx,chislo2 . Не подскажете как можно сделать ввод не числа состоящего больше чем из одного символа