Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2016, 20:24   #1
Юлия123456
Пользователь
 
Регистрация: 06.06.2016
Сообщений: 11
По умолчанию Задача на Assembler в среде RadAsm! Дан четырехзначный номер года.Записать в регистр BL номер столетия

Дан четырехзначный номер гоа.Записать в регистр BL номер столетия (напр.1492=15 )
programs
Юлия123456 вне форума Ответить с цитированием
Старый 08.06.2016, 20:57   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
; fasm code......
org 100h
jmp start

mess0   db  13,10,' Type Year: $'
mess1   db  13,10,' Century..: $'
year    dw  0

start:  mov   ah,9              ; запрос на ввод года с клавиатуры
        mov   dx,mess0          ;
        int   21h               ;
        mov   cx,4              ; 4 разряда в числе
input:  xor   ax,ax             ; ввод без эхо
        int   16h               ;
        cmp   al,'0'            ; фильтр чисел..
        jb    input             ;
        cmp   al,'9'            ;
        ja    input             ;
        int   29h               ; выводим число на экран
        shl   ax,12             ; отправляем число в старшую тетраду АХ
        shld  [year],ax,4       ; сдвигаем очередной разряд года в переменную
        loop  input             ; читаем с клавы остальные разряды года

        mov   ah,9              ; выводим столетие на экран
        mov   dx,mess1          ;
        int   21h               ;
        mov   ax,[year]         ; АХ - введённый год (BCD-формат)
        inc   ah                ; увеличиваем столетие
        mov   bl,ah     ;<------; ТВОЁ УСЛОВИЕ!!! ===============================//
        shr   ax,4              ;
        shr   al,4              ;
        add   ax,3030h          ; переводим BCD в символы
        xchg  ah,al             ;
        int   29h               ;
        xchg  ah,al             ;
        int   29h               ; выводим столетие на экран

exit:   xor   ax,ax             ;
        int   16h               ;
        int   20h               ; на выход!
Изображения
Тип файла: jpg century.JPG (7.7 Кб, 41 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 13.06.2016, 15:58   #3
Юлия123456
Пользователь
 
Регистрация: 06.06.2016
Сообщений: 11
По умолчанию

мне кажется,тут не учитываются некоторые случаи.например,2000 - 20 век ,а не 21
programs
Юлия123456 вне форума Ответить с цитированием
Старый 13.06.2016, 16:32   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..так это для вас оставлено, чтоб не сидели сложа ручки, а хоть что-то делали.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 13.06.2016, 17:07   #5
Юлия123456
Пользователь
 
Регистрация: 06.06.2016
Сообщений: 11
По умолчанию

TITlE 11
INCLUDE Irvine32.inc
INCLUDELIB Irvine32.lib
INCLUDELIB kernel32.lib
.data
x WORD 1234
k word 1
.code
main PROC
mov eax,0
mov ax ,x
mov cx,100
mov dx,ax
div cx
mul cx
cmp ax,dx
JB L1
div cx
L1: add ax,k
call DumpRegs
call WaitMsg
main ENDP
END main ;
а вот из этой задачи можно переписать в bl?
programs
Юлия123456 вне форума Ответить с цитированием
Старый 13.06.2016, 17:26   #6
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..да!
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 13.06.2016, 19:11   #7
Юлия123456
Пользователь
 
Регистрация: 06.06.2016
Сообщений: 11
По умолчанию

как это можно сделать?ведь нельзя просто написать: mox bl,ax
programs

Последний раз редактировалось Юлия123456; 13.06.2016 в 20:18.
Юлия123456 вне форума Ответить с цитированием
Старый 13.06.2016, 20:30   #8
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Юлия123456, ваша программа рабочая? Вы её компилировали?
Думаю, в начале нужно решить проблему с "ошибкой деления".
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 14.06.2016, 15:09   #9
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

R71MT,
а есть ли смысл что либо делить? Прямо со строкой нужно и работать -- если введено четыре цифры, то обработать две старшие, если три -- то обработка одной цифры, если две или одна цифра, тогда сразу пишем на экран "первое столетие". Складываем последнюю цифру и смотрим есть ли перенос из 4 бита (команды есть специальные для работы с ASCII-цифрами)
Mikl___ вне форума Ответить с цитированием
Старый 14.06.2016, 16:17   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Mikl___, согласен. Получится красивее..
Но ТС захотела использовать деление (хотя эта тема у неё тоже храмает).
Используя деление можно организовать такой алгоритм:
Код:
     mov   ax,1234h
     mov   bx,100h
     xor   dx,dx
     div   bx
     or    dx,dx
     jz    @@1
     inc   al
@@1: mov   bl,al
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Assembler в среде RadAsm! Дан массив a(n) типа WORD. Найти минимальный элемент. TunelLord Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 06.06.2016 21:56
Задача на Assembler в среде RadAsm!дан массив Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.06.2016 21:11
Задача на Assembler в среде RadAsm! В переменной типа WORD биты содержать значения переменных A B C. Вычислить A*B-C TunelLord Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 06.06.2016 19:59
с++ Дан номер года,Определить соответствующий ему номер столетия rinoolik Помощь студентам 1 18.02.2013 22:21
сравнение текущего года и месяца с годом и месяцем поступления, а после сравнения записать номер курса Таня84 БД в Delphi 5 11.06.2007 13:53