Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачка на регистры и числа, нужна подсказка. 
:(
    Опции темы
deathroll
Дата 11.8.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Код

system:
               lea     si, message
outchar:  mov     dx, serial_2+5

next:        mov     dx, serial_2+5
ch_agn:    in        al, dx
                 test     al,  1
                jz         ch_agn
                mov      dx, serial_2
                in          al,  dx
                sub      al, 30h
                mov      ch, al
                or         al, al

send:      mov     dx, serial_2+5
               in        al, dx
               test     al, 20h
                jz      send
               mov    al, cs:[si]
               mov    dx, serial_2
               or      al, al
               jz      done
               out    dx, al
               inc     si
               jmp     SHORT SEND
              
;        or      al, al
;        jz      done
;        mov     dx, serial_2
;        out     dx, al

done:
loop send
mov si,offset message
message db  'Hello World',13,10,0,0


надеюсь понятно что здесь делается: Вводим цифру, и столько раз нам выпадает злостчастный хеллоВорд

Теперь задача усложняется, нужно ввести не цифру, а число(двухзначное), и столько раз нам должен выпать хеллоу ворлд

Помогите с куском ввода, желательно с комментами, чтобы разобраться.
В принципе на теории понятно, что читаем первую цифру, кидаем в регистр, потом вторую, потом как-то формируем общий адрес. в общем - помогите начинающему.
PM MAIL   Вверх
MAKCim
Дата 11.8.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Код

...
.data
    message db "Hello, World!",13,10,"$"
.code
main:
    mov AX, @data
    mov DS, AX
    call input                    ; ввод числа
    call print                     ; печать
    mov AX, 4C00h        ; код выхода
    int 21h

print proc
    mov AH, 9
    lea DX, message
L2:                                   ; печатать
    int 21h                         ; строку по адресу DS:DX
    loop L2                       ; CX раз
    ret
print endp

input proc
    xor CX, CX
    xor DH, DH
    mov CL, 2
    mov BL, 10                   ; 10 т. к всего 2 цифры
L1:
    mov AH, 1
    int 21h                            ; ввод в AL кода ASCII цифры
    sub AL, 48
    mul BL                           ; AL*BL, результат в AX, но все помещается в AL
    add DH, AL                  ; в DH будет храниться 2-ое число
    xor AH, AH                   
    mov AL, BL                  ; нужно для деления BL на 10
    mov BL, 10
    div BL                            ; AX/BL, в AL - частное, в AH - остаток
    mov BL, AL
    loop L1
    mov CL, DH
    ret
input endp

end main


Это сообщение отредактировал(а) MAKCim - 11.8.2006, 16:43


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.