Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Въпрос относно задача в асемблер

Featured Replies

Здравейте имам малко нужда от помощ. Задачата ми е да въведа случайни букви и цифри от клавиатурата и да изкарам само цифрите и то в обратен ред. Та въпроса ми е как да премахна буквите за да останат само цифрите. Благодаря за помощта, ако има нещо, което не съм казал питайте, че за пръв път реших да търся помощ тук.

дефинирай какво са букви или дефинирай какво са цифри и съответно да се показва или да не се показва :clown:

  • Автор

Не можах да намеря как да го направя, но утре ще попитам учителят ми как става. Все пак сега почнах да уча асемблер. Благодаря ти все пак.

format MS64 COFF
include 'win64a.inc'

public start
extrn puts
extrn exit
extrn gets
extrn strlen

section 'data' data readable writeable
input db 64 dup ?
output db 64 dup ?

section 'code' code readable executable
start:
sub rsp, 8
fastcall gets, input
fastcall reverse
fastcall puts, output
fastcall exit, 0


proc reverse
push rsi rdi               ; запазваш неволатилните за индекси
xor edi, edi               ; нулираш единия индекс
fastcall strlen, input
mov esi, eax               ; а другия го приравняваш на дължината на входа
.up:
dec esi                    ; намаляш го с едно за да не четеш нул терминатора
mov al, [rsi + input]      ; четеш входа отзад напред
cmp al, 30h                ; проверяваш всеки символ дали е цифра
jb @f
cmp al, 39h
ja @f
mov [rdi + output], al    ; ако е цифра (между 30 и 39 шестнайстично) го записваш на изхода
inc edi
@@:
cmp rsi, 0
jne .up
mov [rdi + output], 0     ; накрая записваш нул терминатор на изхода
pop rdi rsi               ; връщаш неволатилните за да спазиш фасткол конвенцията
ret
endp       

 

  • Автор

О не я исках готова макар, че ти благодаря, но и не е това което я търся сега започвам да уча асемблер доколкото ми я обясниха трябва да сравнявам AL с цифрите от '0' до '9' само и да ги слагам в стек

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.