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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 01:29   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Не работает код, выводит одни нули

Исправьте этот код, пожалуйста, ито выводит одни 0, а должен 3 6 9 и тд

Код:
.model tiny
.data
buffer dw ?
.code
start:
pop ds
m100:
mov ax,1
lea di,buffer
mov si,[di+4]
mov cx,1000
m3:
stosw
inc ax
loop m3
mov bx,10
mov cx,1000/3
m4:
lodsw
add si,6
push cx
xor cx,cx
m1:xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jne m1
mov ah,2
m2:pop dx
add dl,30h
int 21h
loop m2
mov dl,20h
int 21h
pop cx
loop m4
mov ah,1
int 21h
cmp al,20h
jne m100
mov ax,4c00h                
int 21h
end start
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 22.02.2013, 07:26   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Алексей_2012, удалась Вам оптимизация моего кода. Вот это на кой предмет Вы наоптимизировали?
Код:
.model tiny
.data
buffer dw ?
.code
start:
pop ds
vadimych вне форума Ответить с цитированием
Старый 22.02.2013, 08:17   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от vadimych Посмотреть сообщение
Алексей_2012, удалась Вам оптимизация моего кода. Вот это на кой предмет Вы наоптимизировали?
Код:
.model tiny
.data
buffer dw ?
.code
start:
pop ds
Гыыы... зачётная оптимизация))) удивительно, что при этом из-за стека не падает программа. Смотрю - и плакать хочется...

Алексей_2012,
какой размер будет у вашего сегмента данных?
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 22.02.2013 в 08:21.
DiemonStar вне форума Ответить с цитированием
Старый 22.02.2013, 16:25   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

да, где pop ds-моя оптимизация, потому что работало в той программе, а в этой не знаю, вроде бы все правильно, но работает не так как должно, хотя несколько раз код перепроверял, обдумывал.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.02.2013, 01:15   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

ну а в коде из первого поста что изменить надо? чтобы нули не выводились
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 25.02.2013, 07:47   #6
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Цитата:
ну а в коде из первого поста что изменить надо?
Надо просто деоптимизировать. И попросите наконец своего работодателя-гуру решить Вашу задачу в 16 строк и покажите его решение. А то без пруфа он знаете кто? Да и Вы вместе с ним.
vadimych вне форума Ответить с цитированием
Старый 25.02.2013, 09:03   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
И попросите наконец своего работодателя-гуру решить Вашу задачу в 16 строк и покажите его решение.
Резко поддержал. Посмотреть очень интересно.

Чисто гипотетически: без массива. создать цикл с шагом 3 и через сопроцессор переводить число в BCD-формат. И строковыми переменными добавлять '0' и писать в видеопамять. Но все-равно строк на 30-35 набегает.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.02.2013, 23:06   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
.model small ;тип памяти
.code        ; код
start:       ; метка начала программы
jmp m101     ; прыжок на метку 101
m100:mov ah,2
mov dl,0ah  
int 21h      ; команды перехода на новую строчку
m101:        ; метка
mov bx,10    ; в регистр bx запишим число 10 
mov si,1     ; в регистр si запишим 1 для наращивания
mov cx,1000/3; задаем цикл 
m1:push cx   ; записываем "оборот" цикла в стек
xor cx,cx    ; обнуляем сх
mov ax,3     ; в ах помещаем три
mul si       ; умножаем содержимое si на 3
m2:xor dx,dx ; обнуляем регистр где будет остаток
div bx       ; делим содержимое ах на 10
push dx      ; записываем остаток в стек
inc cx       ; увеличиваем число цикла для вывода остатка от деления
cmp ax,0     ; пока ах не 0
jne m2       ; продолжаем делить ах
mov ah,2     ; функция вывода одного символа     
m3:pop dx    ; берем из стека число, которое в остатке
add dl,30h   ; переводим число в символ
int 21h      ; прерыванием выводим символ
loop m3      ; пока сх не 0 выводим символы
mov dl,20h   ; разделяем числа кратные 3
int 21h      ; прерывание для вывода разделителя
inc si       ; наращиваем si на 1 (будем умножать уже 2 на 3, потом 3 на 3 и т.д.)
pop cx       ; восстанавливаем число "оборотов" цикла
loop m1      ; сх-1 и переход на метку
mov ah,1     ; функция ввода
int 21h      ; одного символа
cmp al,20h   ; если введенный символ не пробел
jne m100     ; то повторяем вывод чисел от 1 до 1000
mov ax,4c00h ; функция нормального выхода из программы
int 21h      ; прерывание
end start    ; окончание программы
На 38 строк без массива вышло
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 26.02.2013, 07:10   #9
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Ясно всё с вами.
vadimych вне форума Ответить с цитированием
Старый 27.02.2013, 00:19   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

с нами то ясно, а вот код из первого кода по прежнему не работает
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Код Цезаря(программа выводит не то что нужно) GrafMonte Помощь студентам 1 12.10.2011 09:43
Код не работает в IE asdasdasdasd HTML и CSS 5 24.08.2010 19:36
Помогите пожалуйста, программа работает, но почему-то в конце не выводит получившуюся матрицу... Dead Romantic Помощь студентам 6 11.12.2009 19:03
Код выводит пустые строки fs444 Общие вопросы C/C++ 7 20.08.2009 16:01