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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2016, 19:57   #1
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию Помогите с программой

.model small
.data
array db 14 dup (?)
buffer db 35 dup (''),'$'
.stack 256
.code
begin:
mov ax,@data
mov ds,ax
mov es,ax
mov ax,1
mov bx,1
mov cx,14
mov di, offset array
mov si,di
cycle1:
stosb
add ax,bx
xchg ax,bx
loop cycle1
mov di,offset buffer
mov dx,di
mov cx,14
cycle2:
lodsb
aam
xchg ah,al
or ax,'00'
stosw
inc di
loop cycle2
mov ah,9
int 21h
mov ah,4ch
int 21h
end begin
Нужно чтобы корректно выводил трехзначные числа
Dimas190597 вне форума Ответить с цитированием
Старый 02.10.2016, 21:37   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Через AAM сможешь вывести только 2-значные числа.
С 3- и более значными такой фокус не пройдёт, и нужна отдельная функция
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 02.10.2016, 21:40   #3
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию

Что тогда вставить надо?
Dimas190597 вне форума Ответить с цитированием
Старый 02.10.2016, 22:33   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

говорю-же функцию
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 02.10.2016, 23:16   #5
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию

Получается нужно написать отдельно для трехзначных чисел через div или можно все через div сделать?
Dimas190597 вне форума Ответить с цитированием
Старый 03.10.2016, 10:45   #6
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию

Можете уточнить, что конкретно надо вставить?
Dimas190597 вне форума Ответить с цитированием
Старый 03.10.2016, 11:41   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

ВХ внутри функции "hex2asc" задаёт систему счисления для вывода.
Можешь поменять её на 2, 8 или 16:
Код:
; fasm code...
org 100h
jmp start
 
array  db 24 dup(0)

start:
    mov   di,array
    mov   cx,24
    push  di cx

    mov   ax,1
    mov   bx,1
cycle1:
    stosb               ;создаём массив
    add   ax,bx
    xchg  ax,bx
    loop  cycle1

    pop   cx si
cycle2:
    lodsb               ;читаем массив
    xor   ah,ah
    call  hex2asc       ;выводим число на экран
    mov   al,','        ;разделитель
    int   29h
    loop cycle2

    xor   ax,ax         ;ждём любую клавишу..
    int   16h
    int   20h           ;выход в DOS!!!
;---------------------------------------------------------
hex2asc:                 ; Функция переводит числа в символы
   pusha                 ; Вход:  АХ = число, BX = система счисления
   mov   bx,10           ;
   xor   cx,cx           ; Выход: на экране
isDiv:                   ;
   xor   dx,dx           ;
   div   bx              ;
   push  dx              ;
   inc   cx              ;
   or    ax,ax           ;
   jnz   isDiv           ;
isOut:                   ;
   pop   ax              ;
   cmp   al,9            ;
   jle   noHex           ;
   add   al,7            ;
noHex:                   ;
   add   al,30h          ;
   int   29h             ;
   loop  isOut           ;
   popa                  ;
ret                      ;
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 03.10.2016, 15:54   #8
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию

Нужно взять отрывок:
hex2asc: ; Функция переводит числа в символы
pusha ; Вход: АХ = число, BX = система счисления
mov bx,10 ;
xor cx,cx ; Выход: на экране
Или это готовая программа? Если да, то она не работает, но я так понимаю это fasm, а у меня tasm
Dimas190597 вне форума Ответить с цитированием
Старый 03.10.2016, 16:00   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Где вы увидели фасм?
p51x вне форума Ответить с цитированием
Старый 03.10.2016, 19:03   #10
Dimas190597
 
Регистрация: 02.10.2016
Сообщений: 9
По умолчанию

; fasm code...
Просто я недавно столкнулся с ассемблером и ничего в нем не знаю, а делать лабораторные по нему надо
Dimas190597 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой на С++ Andry95 Общие вопросы C/C++ 0 15.03.2016 17:20
Помогите с программой на С++ Andry95 Общие вопросы C/C++ 1 15.03.2016 17:04
Помогите с программой на си anerv Общие вопросы C/C++ 0 26.05.2014 22:12