![]() |
У кого есть исходник к такой проге: 1)переводит число из шестнацатиричной в десятиричную.
2) заполняет экран знаком $ |
MER
Можно поконкретней? 1. Под какую ОС? 2. Приложение консольное или графическое? 3. Какой ассемблер? :) |
MER на те код к второй проге:
на C while (true) printf("$"); на Паскале While true do write('$'); :) |
e80
Смешно. Только без Ctrl+C не обойтись. Да и вопрос был про ассемблер. :gigi: |
shurikan, сори про АСМ не заметил :(
но там будет чето в духе mov cx, 4000 ;счетчик (4000 символов вывести) lab1: mov dl, 20h ;наш символ mov ah, 2h ; функц. вывод на екран символа int 21h ; int 21h он и в африке 21h loop lab1 ; цикл где 20h - заменяеш на код "$" :) :) :) |
e80
Под DOS-ом прокатит, да и то сначала надо экран очистить и стартовать с левого верхнего угла. А под win- или nix? Потому и спрашивал, чего так сразу код писать? :) |
shurikan, вериш, впадло просто асм вспоминать, уже года 3-4 не програмил
а ты вот комментируеш тут, я конечно понимаю - критика правильная, но тем не менее кинул бы пару примеров под дос вин *nix (а код мой ейсли 4000 изменить на 32000 не требует очистки екрана и всего остального :) ) |
e80, прости, я не критикую. Я просто говорю, что в этих осях вывод организован по разному, по-этому я и задавал *
MER-у вопросы. Кстати, тебе не кажется, что мы развели с тобой двустороннюю дискуссию, а "Германна все нет"? :) *:beer::beer::beer: |
Я слышал, есть такая прога которая из паскалевских файлов *.pas делает файлы *.asm. Это правда? Если есть такая прога, то скажите где ее можно взять.
|
MER
Паскалевскую прогу компилируеш, потом дизасемблируеш :) а напрямую не слышал :( |
Дайте, кто знает, ссылку на какой-нибудь сайт, с которого можно было бы скачать кучу исходников по Ассемблеру.
|
MER
У меня предложение :). Какое? А вот какое - поисковые системы. Скажем по яндексу на запрос ассемблер исходники можно было в пятой строке найти такое - http://lib.k6.ru/a/Assembler/stat.php . Дальше не проверял, но уверен, что похожей информации там не мало. Желаю удачи. |
Куча статей и исходников по ассемблеру - www.wasm.ru
|
Во блин, нарыл!!!
MER Цитата:
http://www.fortunecity.com/skyscraper/sql/39/ http://pascal.times.lv/dl/compilers.htm |
Pod Linux mozhno C v ASM perefigachit':
gcc -s proga.c kod na asm: proga.s :cranky: |
Andreich
Как все-таки эта прога работает (я понял что через командную строку)? |
b]MER[/b]
Цитата:
|
e80
за это mov cx, 4000 ;счетчик (4000 символов вывести) lab1: mov dl, 20h ;наш символ mov ah, 2h ; функц. вывод на екран символа int 21h ; int 21h он и в африке 21h loop lab1 ; цикл спасибо, но как сделать так чтобы окно при этом не исчезало, а оставалось открытым с полностью заполненным экраном? |
MER, в конце делаеш вызов функции считывания символа с клавы - и все. (листинг позже)
А чтоб окно не закрывало, запускай из консоли (command.com - в 98, cmd - в 2000) |
e80
в конце делаеш вызов функции считывания символа с клавы - че это за функция, такую не знаю, подскажи? |
MER
Код:
[s]Исправлено: shurikan, 5:57 18-11-2003[/s] |
data SEGMENT
mes1 db 'Enter',0Ah,0Dh,'$' aadb 6,? adb 5 dup (?) data ENDS text SEGMENT assume CS:text, DS:data, SS:sts main proc far push DS xor AX,AX push ax mov ax,data mov DS,AX lea DX,mes1 mov AH,09h int 21h lea DX,aa mov AH,0Ah int 21h ;--------------------------- Таким образом я ввожу данные с клавы. Как введенные мной данные поместить в какой-нибудь регистр (АХ например), чтобы в отладчике я мог видеть это число (понятно в шест. сист. счисления)? подскажите пожалуйста кто знает |
MER
Далее... [code] * * lea * SI,a * * xor *BX,BX * * mov BH,[aa+1] * * xor * DX,DX * * and *BX,BX * * jz * *done * * mov CL,4 nextdig: * * lodsb * * cmp AL,'0' * * jc * * error * * cmp '9',AL * * jnc * process * * and *AL,0DFh * * cmp AL,'A' * * jc * * error * * cmp 'F',AL * * jc * * error * * sub *AL,7 process: * * sub AL,'0' * * shl *DX,CL * * add DX,AX * * dec BX * * jnz nextdig done: // закончили. число в DX ... error: //обработчик ошибки :) [s]Исправлено: shurikan, 4:33 20-11-2003[/s] [s]Исправлено: shurikan, 4:36 20-11-2003[/s] |
Подскажите плиз: Есть у меня число в регистре AX (к примеру 80B2), как вывести это число на экран именно в таком же виде, т.е число 80B2.
|
MER
Код:
[s]Исправлено: shurikan, 5:38 21-11-2003[/s] |
вот полный код проги(com) выводяшей сканкод клавиши
Код:
код букв(A..F) больше их значения на 37h [s]Исправлено: Andreich, 22:43 21-11-2003[/s] |
Andreich Большое спасибо, но это что за переменные n1, n2, n3, n4. Где их и как описать? Добавлено: shurikan Спасибо, Все работает, наПочему-то на экран ничего не выводит, почему? |
MER
А там и нет функции вывода. Я думал ты сам сможешь отобразить строку на экране. А в коде я специально комментарий поставил. Это там, где последним символом строки заносится 0h или '$'. *Ты же сам писал: Цитата:
:) |
MER см выше
|
Andreich
Все круто, но последние две цифры всегда 1 и 0, независимо от того какое число я ввожу! Добавлено: shurikan Незнаю почему, но выводит так: 7777 (не зависимо от того какое число я ввожу) |
блин, народ, весь инет перекопал, а вот как сделать генератор СЧ - не нашел:( помогите кто знает
|
MER
Прости зас.....ца!!!:shuffle: Ошибся! После метки @@1 вторая команда д.б. не rol, а rcl. Говорят же: "Поспешай, не торопясь". |
Ищу исходники к таким прогам:
1. Дано 4-х-значное число. Найти сумму цифр. 2. Напечатать в одну строку все литеры с 'А' по 'Z'. |
1.
Код:
mov ax,1235 ;заносим в АХ наше число Код:
cseg segment [s]Исправлено: Andreich, 22:16 30-11-2003[/s] |
MER
Ты сам придумываешь, или вам задания дают? Странные они какие-то. Обычно задача ставится и решается в общем виде. Например, почему именно 4-значное число? В какой системе счисления? А если у меня больше или меньше знаков в числе? А если число отрицательное, но все же 4-значное? Для того, чтобы такие задачки решать, необходимо представить себе, что ты сам бы делал с числом, строкой или любым другим объектом. Вот твое 4-значное число. Как найти его сумму цифр? *Надо иметь аккумулятор, где будет накапливаться сумма цифр. Поначалу в нем, естественно, 0. Задано 4 знака - значит нам нужно 4 одинаковых действия, помещенные в цикл. Что за действия? 1. Найти остаток от деления числа на 10. Это очередное слагаемое. (пример: 2587 % 10 -> 7) 2. Разделить нацело число на 10. Т.е. отбросить последнюю цифру. (пример: 2587 / 10 -> 258) 3. Добавить остаток из пункта 1 к аккумулятору. 4. Если не все обработано, вернуться к п.1, иначе к п.5 5. Все. Сумма найдена. Осталось только написать код. Не важно на каком языке. А вот последовательность букв от 'A' до 'Z'. Во всех современных кодировках, гарантируется, что буквы следуют в алфавитном порядке. А как хранит буквы компьютер? Каждый символ - это 1 байт (если кодировка не UNICODE). Пусть в байте содержится значение 41h (шестнадцатиричное). Как его интерпретировать, зависит от программиста. Это м.б. просто число. Но... Если ты попросишь систему вывести на экран символ, код которого 41h, то выведется латинская буква 'A'. У буквы 'B' код больше на 1-цу. И т.д. Отсюда появляется идея алгоритма: 1. Всего букв 26 2. Первую выводим с кодом 41h 3. Увеличиваем код на 1. 4. Если не все 26 букв вывели, перейти на п.2, иначе на п.5 5. Закончили. Ну и здесь осталось дело за написанием кода... Попробуй сам! Интересно...:biggrin: Добавлено: Andreich Осторожно!!! Это опасный код: Цитата: Код:
[s]Исправлено: shurikan, 18:52 30-11-2003[/s] [s]Исправлено: shurikan, 18:54 30-11-2003[/s] |
shurikan
Упс:shuffle: Спасибо вроде исправился.не суди строго - я асм изучаю(если можно так сказать) не больше месяца и то когда время есть |
:oszone: Можно ли общаться с СОМ1 портом ПК в операционной системе WindowsXP с помощью Ассемблера!
[s]Исправлено: OLIMJON, 17:33 2-01-2004[/s] Темы лучше не дублировать... [s]Исправлено: Prisoner, 1:10 3-01-2004[/s] |
OLIMJON
Можно. Нужно описать интерфейс функций API CreateFile, WriteFile, ReadFile и CloseHandle. Этих четырех вполне хватит для работы с COM-портом. Под C или Pascal-ем это не проблема. А для болеее полного ответа надо знать, каким ассемблером ты пользуешься. :) |
nujen a86 kod perevesti malenkie bukvi v bolshie.
UpCase PROC NEAR PUSH AX SUB AL,32 ; substruct 32 to get upper case latter POP AX RET UpCase ENDP ne mogu ponyt' pochemu ne rabotaet algoritm |
Guest
Этот код по своей идее должен преобразовывать строчные латинские буквы в прописные. Должен, но ты сначала заталкиваешь AX в стек, потом вычитаешь 32 из младшей половины AX (т.е. из AL), а затем извлекаешь из стека старое значение. Получается с чем вошел, с тем и вышел. :) |
Время: 11:28. |
Время: 11:28.
© OSzone.net 2001-