Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1689
∙ повысить рейтинг »
_Ayl_
Статус: Студент
Рейтинг: 1504
∙ повысить рейтинг »
vladisslav
Статус: 5-й класс
Рейтинг: 1058
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Assembler (Ассемблер)

Номер выпуска:1309
Дата выхода:25.01.2010, 05:30
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:441 / 70
Вопросов / ответов:2 / 2
IRC-канал по теме:#assembler

Вопрос № 176129: Здравствуйте уважаемые эксперты!! Помогите пожалуйста написать программу вывода текущей даты на экран. Ассемблер TASM, DOS, 16 разрядные регистры процессора и для процессоров с архитектурой Intel. Желательно в EXE....


Вопрос № 176151: Здравствуйте, помогите разобраться с задачей. Условие: В векторе B(10) заменить все единицы нулями Правильное ли это решение (tasm):
Код:
   
Вопрос № 176129:

Здравствуйте уважаемые эксперты!!
Помогите пожалуйста написать программу вывода текущей даты на экран.
Ассемблер TASM, DOS, 16 разрядные регистры процессора и для процессоров с архитектурой Intel.
Желательно в EXE.

Отправлен: 19.01.2010, 16:11
Вопрос задал: Смирнов Сергей Анатольевич, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Airyashov, Студент :
Здравствуйте, Смирнов Сергей Анатольевич.
только без лидирующих нулей, например 1/1/2010
Код:
.model small ; модель пямяти для программы типа EXE
.286 ; разрешить использовать команда 80286
.stack 200h ; сегмент стека

.data ; сегмент данных
outbuf db 5 dup(?),'$' ; буфер для перевода числа в строку

.code ; сегмент кода

;Вывод числа на экран, размер числа слово, параметр в ax
WriteAX proc
push ax bx dx si ; поместить используемые регистры в стек
mov si, offset outbuf[5]; адрес буфера для вывода
mov bx, 10 ; коэффициент для деления
make_str:
xor dx,dx ; dx=0
div bx ; dx:ax/bx
or dx,30h ; преобразовать цифру в символ
dec si ; перейти к следующему симв олу
mov [si],dl ; сохранить в строке
test ax, ax ; проверить осталось что-нибудь для вывода
jnz make_str ; да, продолжать преобразование

mov ax, 0900h ; вывести число, функция DOS вывод строки на экран
mov dx, si ; функция DOS вывод строки на экран
int 21h

pop si dx bx ax ; извлечь используемые регистры из стека
ret
WriteAX endp


@start: ; точка входа в программу
mov ax,@data; инициализация семента данных
mov ds,ax
mov es,ax

mov ax,2a00h ;Получить системную дату
int 21h ; вызов DOS
;AL - день недели (0 - воскресенье, 1 - понедельник, ... 6 - суббота),
;СХ - год (от 1980 до 2099)
;DH - месяц (1 до 12)
;DL - день (1 до 31)
xor ax,ax
mov al,dl ; вывести день
call WriteAX
mov al,'/' ; вывести разделитель
int 29h
mov al,dh ; вывести месяц
call WriteAX
mov al,'/' ; вывести разделитель
int 29h
mov ax,cx ; вывести год
call WriteAX


mov ax,0c07h ; ожидаем нажатие клавиши
int 21h ; вызов DOS
;выход из программы
mov ax,4c00h; функция DOS завершение программы
int 21h ; вызов DOS
end @start

Ответ отправил: Airyashov, Студент
Ответ отправлен: 19.01.2010, 16:28

Оценка ответа: 5
Комментарий к оценке:
Спасибо за скорость!!!

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258742 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 176151:

    Здравствуйте, помогите разобраться с задачей.
    Условие:
    В векторе B(10) заменить все единицы нулями

    Правильное ли это решение (tasm):

    Код:
    stacks segment word stack 
    db 100H dup(0)
    stacks ends

    data segment para public 'data'
    array_size equ 10
    array_source dw -3, -2, 1, -1, 4, 3, 0, 1, 3, 1
    data ends

    code SEGMENT para public 'code'
    ;; initialisation of segments...
    assume CS: code,DS: data,SS: stacks
    start:
    mov AX, data
    mov DS, AX

    mov cx, array_size
    mov si, offset array_source
    mov ax, 1
    xor bx, bx
    start_scan:
    cmp ax, [si]
    jne inc_si
    mov [si], bx
    jmp start_scan
    inc_si:
    add si, 2
    l oop start_scan


    MOV AX,4C00H ; завершение программы
    INT 21H
    code ENDS

    end start


    Если можно разъясните как это все работает?

    Отправлен: 20.01.2010, 00:01
    Вопрос задал: pembrock, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич, Модератор :
    Здравствуйте, pembrock.
    Вам в мини-форуме уже объяснили, что Ваш код вполне рабочий
    Для понимания "как это все работает" я прокомментировал Вашу программу.
    Удачи!

    Приложение:

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Модератор
    Ответ отправлен: 24.01.2010, 05:00
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru
    Абонент Skype: igorlyskov

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258891 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 23.01.2010

    В избранное