Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
kalistra
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 6
1

Перевод из систем счислений. Не могу найти ошибку

15.12.2013, 17:17. Просмотров 329. Ответов 2
Метки нет (Все метки)

1) Надо перевести из двоичной в десятичную. Написала на паскале, перевела в ассемблер. Как итог - он выдает последнюю цифру числа. Где косяк в программе не могу понять. Возможно не разобралась с циклом.
В программе нельзя использовать int 21h . Помогите пожалуйста найти ошибку.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
%TITLE "‚*и Є®¬¬Ґ*в*аЁ© Їа®Ја*¬¬л"
INCLUDE IO.ASM
 
MODEL   small
 
ST1 SEGMENT             ;ЋЇЁб*«Ё ᥣ¬Ґ*в б⥪*;
    DB 128 DUP(?)
ST1 ENDS
 
DATA SEGMENT
vvod_n  db       'vvedite n=$'
t   dw  ?
ten     dw  10
two     dw  2
n   dw  ?
x   dw  ?
DATA ENDS
 
 
CODE SEGMENT            ;®вЄал«Ё ᥣ¬Ґ*в Є®¤*;
ASSUME SS:ST1,DS: DATA,CS:CODE    ;бўп§*«Ё ॣЁбва®ўлҐ бҐЈ¬Ґ*вл б ᥣ¬Ґ*в*¬Ё;
 
Start:
    push    ds
    sub ax, ax
    push    ax
    mov ax, data    
    mov ds, ax
;========== ЌЁ¦Ґ ЇЁиЁвҐ ‚*и Є®¤ ==============================
    
    
    lea dx, vvod_n
    outstr
    inint ax
 
 
    mov bx, 0       ;bx=0
    mov cx, 1       ;cx=1
L1:
 
 
   div ten          ;ax:10
   mov x, dx        ;x=dx
   mov t, ax
   mov ax, x        ;n=ax
 
   mul cx           ;ax*x    
   add ax, bx       ;ax+bx
   mov bx, ax       ; t=ax
   
   mov ax, cx       ; ax=cx 
   mul two          ;ax*2 
   mov cx, ax       ;cx=ax
   mov ax, t        ;ax=t
 
 
cmp ax, 0
jmp L1
mov ax, bx
 
 
    
    outint ax
;========== ‡*Є**зЁў*©вҐ ЇЁб*вм ‚*и Є®¤======================
exit:
    pop ax
    pop ds
    finish
ENDS
 
END Start
 
 
2) Тут уже из десятичной в двоичную и здесь я убедилась в том, что не знаю как правильно оформить цикл. Укажите пожалуйста на косяки.
 
 
%TITLE "‚*и Є®¬¬Ґ*в*аЁ© Їа®Ја*¬¬л"
INCLUDE IO.ASM
 
MODEL   small
 
ST1 SEGMENT             ;ЋЇЁб*«Ё ᥣ¬Ґ*в б⥪*;
    DB 128 DUP(?)
ST1 ENDS
 
DATA SEGMENT
vvod_n  db       'vvedite n=$'
t   dw  ?
ten     dw  10
two     dw  2
n   dw  ?
x   dw  ?
DATA ENDS
 
 
CODE SEGMENT            ;®вЄал«Ё ᥣ¬Ґ*в Є®¤*;
ASSUME SS:ST1,DS: DATA,CS:CODE    ;бўп§*«Ё ॣЁбва®ўлҐ бҐЈ¬Ґ*вл б ᥣ¬Ґ*в*¬Ё;
 
Start:
    push    ds
    sub ax, ax
    push    ax
    mov ax, data    
    mov ds, ax
;========== ЌЁ¦Ґ ЇЁиЁвҐ ‚*и Є®¤ ==============================
    
    
    lea dx, vvod_n
    outstr
    inint ax
 
 
    
    inint ax
    mov bx, 1
    mov cx, 0
L1:
  mov t, ax
  div two
  mul two
  sub t, ax
  mul bx
  add cx, bx
  mov ax, t
  div two
  mov t, ax
  mov ax, bx
  mul ten
 
  jmp L1
 
  mul bx
  add ax, cx
 
 outint ax
 
;========== ‡*Є**зЁў*©вҐ ЇЁб*вм ‚*и Є®¤======================
exit:
    pop ax
    pop ds
    finish
ENDS
 
END Start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2013, 17:17
Ответы с готовыми решениями:

Найти наибольшее количество цифр, идущих в ней подряд. Не могу найти ошибку
Добрый день. Есть задание "Дана символьная строка. Найти наибольшее количество...

Не могу найти ошибку
Само зданаие вот: Определить, сколько раз заданный элемент elem встречается в...

Не могу найти ошибку
Привет! Покажите пожалуйста, что я делаю не так. Дано задание: Дан массив...

N! не могу найти ошибку синтаксиса
program p1; var m:byte; function arif(n:byte):integer; begin asm xor AX,AX...

не могу найти ошибку. условие: x=2*b-1+4*(a-3*c)
условие: x=2*b-1+4*(a-3*c) Выводит какой-то непонятный результат, причём при...

2
kalistra
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 6
16.12.2013, 18:41  [ТС] 2
Хотя бы объясните как правильно пользоваться loop'ом, потому что, я так понимаю, у меня именно в нём косяк!
0
Mikl___
Автор FAQ
11987 / 6254 / 596
Регистрация: 11.11.2010
Сообщений: 11,316
18.12.2013, 13:34 3
Цитата Сообщение от kalistra Посмотреть сообщение
Хотя бы объясните как правильно пользоваться loop'ом
kalistra,
loop работает пока в СХ не получится ноль
метка:...
.....
cx:=cx-1
cx = 0 ? если нет goto метка
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 13:34

Никак не могу найти ошибку в коде
Доброго всем времени суток! За ассемблером сижу второй день (ученая...

Вычислить формулу. Не могу найти ошибку
По идеи должно получится х=1 у=1.39 Но получатся х=245 у=0 . Формулы...

Не могу найти ошибку. Вычислить выражения (x+y)^2 и (x+)^3 +12
Здравствуйте, у меня не большой вопрос в плане ассемблера. Не могли бы вы мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru