![]() |
|
|
![]()
|
|
| Tamplier |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 23.4.2007 Репутация: нет Всего: нет |
Надо написать программу, которая бы считала количество едениц в двоичном числе. Вот мой код, но в нём есть ошибки, помогите пожалуйста их исправить.
#include <stdio.h> void main() { int a; int c=2; int q; printf("\n Enter number a="); scanf("%d",&a); asm { mov bx,0 mov ax,a } l1: asm { div c add bx,dx mov q,bx loope l1 } printf("\n kolichestvo edenic=", q); getchar(); getchar(); } |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: нет Всего: 386 |
А в каком месте в коде нет ошибок?
Я бы сделал примерно так... asm {mov Ax,a} l1: asm { shl Ax,1 adc q,0 Or Ax,Ax jnz l1 } -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Tamplier |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 23.4.2007 Репутация: нет Всего: нет |
В этой программе тоже ошибки в 1, 3, 10, 12, 15, 16, 19, 20, 24, 27 строчках как от них избавиться?
И вообще несовсем понятно, как работает программа. Я думал, что число нужно делить на 2 и складывать остатки от деления, пока флаг ZF не примет значение 0. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: нет Всего: 386 |
Я полагаю, что речь идет о Boralnd-С 3.1 или около того?
Ага! Немного понятнее... div c - вы в курсе. что операция div использует пару DX:AX как длинное слово? Что у вас было в DX? loope l1 - использует CX как счетчик цикла. Где инициализация СX? У меня shl Ax,1 - сдвигает все биты вверх, а самый верхний попадает в регистр флагов -СF adc q,0 - прибавляет значение этого самого СF к значению q Or Ax,Ax; jnz l1 - если В Ax остался 0 - прекращаем работу... Ошибки в С исправляйте сами -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |