Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Dialkord228
5 / 5 / 4
Регистрация: 30.11.2015
Сообщений: 107
Завершенные тесты: 1
1

Выводит неверно символ

14.01.2016, 12:46. Просмотров 870. Ответов 3
Метки нет (Все метки)

Программа показывает число, месяц, день недели. Но почему-то неверно показывает 2 символ числа(вместо 14, 1№).
И еще вопрос, как сделать чтобы выводило сразу на 3 языках(англ, русс, укр)?
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
model tiny 
.code 
.startup
mov al,2 
mov ah,00h ;очистка екрана 
int 10h
mov ah,04h ;отримання дня місяця 
int 1ah 
mov si,dx ;запис дня в SI 
mov al,dl ;запис дня в AL 
call first ;перекодування першої цифри 
call sumbol ;вивід першої цифри 
mov al,dl ;аналогічні операції з другою цифрою 
call second 
call sumbol
mov ah,2ah ;місяць 
int 21h ;отримання номера місяця 
mov al,dh ;запис в AL номера місяця 
sub al,1 ;AL – 1(тому що починається з 1, а не з 0) 
mov ah,10 ;AH=10 (довжина імені місяця) 
mul ah ;AH=AH*AL, AL=0 
lea dx,Mis ;загружаємо адрес місяця вDX 
add dx,ax ;DX=DX+AX - адрес потрібного місяця 
mov ah,9h ;виведення місяця на екран 
int 21h
mov ah,04h ;RIK 
int 1ah 
mov al,ch 
call first 
call sumbol 
mov al,ch 
call second 
call sumbol
mov al,cl 
call first 
call sumbol 
mov al,cl 
call second 
call sumbol 
mov al,0 ; виведеня пробіла 
call sumbol
;-------------------------------------------------------------- 
mov ah,2ah ;день 
int 21h 
mov ah,11 
mul ah 
mov dx,Offset DEN 
add dx,ax 
mov ah,9h 
int 21h
;------------------------------Procedyru----------------------
First proc ;перекодування першої цифри 
and al,0f0h ;множимо регістр al на маску 0f0h 
shr al,4 ;здвигаємо на 4 біти вправо 
lea bx,tabl ;загружаємо в BX адрес зміщення таблиці 
xlat ;отримуємо відповідний код символа із таблиці
ret ;повертаємо роботу головній програмі 
First endp 
Second proc ;процедура аналогічна попередній тільки інша 
and al,0fh ;маска, перекодування другої цифри з AL 
lea bx,tabl 
xlat
ret 
Second endp 
sumbol proc ;вивід символа на екран, що знаходиться в AL 
lea bx,Got ;загрузка адреса зміщення GOT 
mov [bx],al ;запис по загруженому адресу зачення AL 
mov dx,bx ;вивід символа на екран 
mov ah,9h 
int 21h 
ret 
sumbol endp
;----------------------------------------------------------------------
RET 
Got db 1 dup (' '),'$' ;буфер для одного символа 
DEN db ' Nedilya $ Ponedilok$ Vivtorok $ Sereda  $  Chetver $ Pyatnucya$ Subota $' 
Mis db ' Sichen $ Lyutuy  $ Berezen$ Kviten  $ Traven   $Cherven $Lupen   $Serpen  $Veresen $Ghovten $Lustopad $Gruden   $' ; наперед підготовлені строки 
tabl db '0123456789' ;таблиця 
end
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2016, 12:46
Ответы с готовыми решениями:

Tasm 02h не выводит символ, записанный в память
Уже все перепробовал, в отладчике все значения правильные, в dl 31h НО выводит...

Вывод символов таблицы ASCII в указанном диапазоне (программа выводит только один символ)
Есть программа, она должна выводить указанные символы таблицы ASCII. Указываем...

Программа вызывает процедуру, которая выводит строку, символ или число в соответствии с вариантом
Программа вызывает процедуру, которая выводит строку, символ или число в...

Ввести строку и символ с клавиатуры. Проверить есть ли такой символ в строке
Совершенно не понимаю Assembler, помогите пожалуйста с заданием. Задание:...

Макроопределения совместно с с++: Заменить заданный символ в строке текста на указанный новый символ
Вот код. Задание: заменить заданный символ в строке текста на указанный новый...

3
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,511
Записей в блоге: 5
14.01.2016, 19:07 2
Цитата Сообщение от Dialkord228 Посмотреть сообщение
как сделать чтобы выводило сразу на 3 языках(англ, русс, укр)?
XLAT тебе в помощь
1
Constantin Cat
2980 / 1114 / 376
Регистрация: 28.02.2015
Сообщений: 2,452
Завершенные тесты: 1
15.01.2016, 13:54 3
Лучший ответ Сообщение было отмечено Dialkord228 как решение

Решение

Два языка третий или любое количество сделаете по аналогии.
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
model tiny 
.code 
org 100h
start:  mov ah,2ah
    int 21h
    mov dwY,cx
    mov dbD,dl
    mov dbM,dh
    mov dbW,al
    mov cx,2
    lea bx,pLang
@@01:   MOV si,[bx]
    push    bx
    push    cx
    mov al,dbD
    xor ah,ah
    call    outnum
    mov bl,dbM
    call    outinf
    mov ax,dwY
    call    outnum
    mov bl,dbW
    add bx,12
    call    outinf
    pop cx
    pop bx
    add bx,2
    loop    @@01
    xor ax,ax
    int 16h
    ret
outNum: xor cx,cx
    mov bx,10
@@02:   xor dx,dx
    div bx
    push    dx
    inc cx
    or  ax,ax
    jnz @@02
@@03:   pop ax
    or  al,'0'
    int 29h
    loop    @@03
    ret
outinf: shl bx,1
    mov dx,[bx+si]
    mov ah,9
    int 21h
    ret
pLang   dw  offset dwRu
    dw  offset dwEn
dwRU    dw  offset dbJanru
    dw  offset dbFebru
    dw  offset dbMarru
    dw  offset dbAprru
    dw  offset dbMayru
    dw  offset dbJunru
    dw  offset dbJulru
    dw  offset dbAugru
    dw  offset dbSepru
    dw  offset dbOctru
    dw  offset dbNovru
    dw  offset dbDecru
    dw  offset dbSunru
    dw  offset dbMonru
    dw  offset dbTueru
    dw  offset dbWenru
    dw  offset dbThuru
    dw  offset dbFriru
    dw  offset dbSunru
dwEN    dw  offset dbJanen
    dw  offset dbFeben
    dw  offset dbMaren
    dw  offset dbApren
    dw  offset dbMayen
    dw  offset dbJunen
    dw  offset dbJulen
    dw  offset dbAugen
    dw  offset dbSepen
    dw  offset dbOcten
    dw  offset dbNoven
    dw  offset dbDecen
    dw  offset dbSunen
    dw  offset dbMonen
    dw  offset dbTueen
    dw  offset dbWenen
    dw  offset dbThuen
    dw  offset dbFrien
    dw  offset dbSunen
dbJanru db  ' Январь $'
dbFebru db  ' Февраль $'
dbMarru db  ' Март $'
dbAprru db  ' Апрель $'
dbMayru db  ' Май $'
dbJunru db  ' Июнь $'
dbJulru db  ' Июль $'
dbAugru db  ' Август $'
dbSepru db  ' Сентябрь $'
dbOctru db  ' Октябрь $'
dbNovru db  ' Ноябрь $'
dbDecru db  ' Декабрь $'
dbSunru db  ' Воскресение $'
dbMonru db  ' Понедельник $'
dbTueru db  ' Вторник $'
dbWenru db  ' Среда $'
dbThuru db  ' Четверг $'
dbFriru db  ' Пятница $'
dbSatru db  ' Субота $'
dbJanen db  ' January $'
dbFeben db  ' February $'
dbMaren db  ' March $'
dbApren db  ' April $'
dbMayen db  ' May $'
dbJunen db  ' June $'
dbJulen db  ' July $'
dbAugen db  ' August $'
dbSepen db  ' September $'
dbOcten db  ' October $'
dbNoven db  ' November $'
dbDecen db  ' December $'
dbSunen db  ' Sunday $'
dbMonen db  ' Monday $'
dbTueen db  ' Tuesday $'
dbWenen db  ' Wednesday $'
dbThuen db  ' Thursday'
dbFrien db  ' Friday $'
dbSaten db  ' Saturday $'
dwY dw  ?
dbM db  ?
dbD db  ?
dbW db  ?
end start
1
Dialkord228
5 / 5 / 4
Регистрация: 30.11.2015
Сообщений: 107
Завершенные тесты: 1
15.01.2016, 14:53  [ТС] 4
Constantin Cat, Спасибо огромное!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2016, 14:53

Заменить заданный символ в строке на указанный символ
Ребят, нашел вот такой код, должен заменить заданный символ в строке на...

Есть программа. Нужно ввести слово и вывести первый символ, всю строку и последний символ вот часть кода
mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov AH,09h...

Вывести приглашение к вводу символа, ввести символ, вывести введенный символ в центре очищенного экрана
Приложение DosBox Tasm.


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

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

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