0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 10
1

Ввести с клавиатуры строку символов. На новой строке вывести два символа: с max и min ASCII кодом

02.06.2014, 03:05. Показов 1594. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!!!
Код работает нормально,но он в конце выводит числа min и max) а надо что бы выводил символы ascii) помогите пожалуйста)буду очень благодарен)


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
.model small
.data
       
      
        enterStr db 13,10,'Please enter you string: $'
        dec_out  db 13,10,'The Maximum is:$'
        dec_  db 13,10,'The Minimum is:$'
        myStrMax db 200
        myStrLen db ?
        myStr    db 210 dup(?)
 
.stack 100h
.code
start:
        mov ax, @data
        mov ds, ax
 
        ;------------------------------------
        ;-----------------Приглашение к вводу
        mov ah, 09h
        mov dx, offset  enterStr
        int 21h
        ;-----------------Вводим строку
        mov ah, 0ah
        mov dx, offset myStrMax
        int 21h
        ;-----------------Готовимся к обработке
        xor ch,ch
        cld
        mov cl, [myStrLen]
        mov si,offset myStr
        mov ah, [si]
;-----------Ишем максимум
        findMax:
                lodsb         ;Загружаем 1 байт в регистр Al
                cmp ah, al
                jge findNext  ;больше или равно
                mov ah, al
        findNext:
                loop findMax
        ;-----------------Готовим число к выводу
        mov al, ah
        xor ah, ah
        push ax
 
        
 
         ;-----------------вывод строки "максимум"
        mov ah, 09h
        mov dx, offset dec_out
        int 21h
        pop ax
        ;-----------------вывод сам аски код
        call out_dec
    
        
        ;----------- Ишем мin
 xor ch,ch
        cld
        mov cl, [myStrLen]
        mov si,offset myStr
        mov ah, [si]       
findMin:
 lodsb 
 cmp al, ah
 jae findNextt 
 mov ah, al
 findNextt:
 loop findMin
 mov al, ah
 xor ah, ah
push ax
             ;-----------------вывод строки "min"
        mov ah, 09h
        mov dx, offset dec_
        int 21h
        pop ax
        ;-----------------вывод сам аски код
        call out_dec
        ;-----------------вывод в дос
       
        
         ;------------Нажатие
        mov ah, 8h
        int 21h
        ;------------Выход
        mov ah, 4ch
        mov al, 0
        int 21h
        ;-----------------вывод
        out_dec:
                xor cx, cx
                mov bx, 10
 
        out_dec_div:
                xor dx, dx
                div bx
                or dx, 30h            ;остаток от деления
                push dx               ;сохраняем в стеке
                inc cx                ;считаем кол-во цифр
                or ax, ax             ;пока не 0 - делим
                jnz out_dec_div
 
        out_dec_out:
                pop ax               ;извлекаем из стека
                int 29h              ;и выводим подсчитаенное кол-во цифр
                loop out_dec_out
 
 ret
 
       
 
end start
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 03:05
Ответы с готовыми решениями:

Ввести два символа с клавиатуры и сравнить и вывести символ с большим кодом
Доброго времени суток ув. Форумчане! - - - - - Я наверное полное дно и не вижу очевидного, но...

ввести с клавиатуры 1 символ. вывести на экран ASCII код этого символа
Пример 1 ввод W вывод 87 пример 2 ввод + вывод43 пример 3 ввод L вывод 76

Ввести четыре числа: Вывести два наибольших числа. Вывести два из них, расположенных между max и min. Visual Basic
Ввести четыре числа: Вывести два наибольших числа. Вывести два из них, расположенных между max и...

Ввести с клавиатуры строку символов. Перевернуть каждое четное слово в строке.
Есть задание. Ввести с клавиатуры строку символов. После чего Перевернуть каждое четное слово в...

1
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
02.06.2014, 12:58 2
Лучший ответ Сообщение было отмечено eti666 как решение

Решение

[masm]
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
.model  small
.data
dos_inp macro   lbl, sz
_ib_    struc  
max db  sz      ; наибольшая длина строки
len db  ?               ; сюда вернется настоящая длина
bf  db  sz dup(?)   ; тут будет то, что ввели
_ib_    ends            
lbl _ib_ <>
endm
 
 
req db  13,10,'Please enter you string: $'
cmax    db  13,10,'The Maximum is: " "'
pmax    =   $ - 2
cmin    db 13,10,'The Minimum is: " "$'
pmin    =   $ - 3
dos_inp buf, 200
 
.stack  100h
.code
start:
    mov ax, @data
    mov ds, ax
.686
 
        ;------------------------------------
        ;-----------------Приглашение к вводу
    mov ah, 09h
    lea dx, offset req
    int 21h
        ;-----------------Вводим строку
    mov ah, 0ah
    lea dx, offset buf
    int 21h
        ;-----------------Готовимся к обработке
    movzx   cx, byte ptr buf.len
    lea si, buf.bf
    mov bx, 0FFh    ; bx- min
    xor dx, dx      ; dx - max
    xor ax, ax
 
@loop:  lodsb
    cmp ax, bx
    cmovb   bx, ax
    cmp ax, dx
    cmova   dx, ax
    loop    @loop
    mov byte ptr pmax, dl
    mov byte ptr pmin, bl
    lea dx, cmax
    mov ah, 9
    int 21h
    xor ax,ax
    int 16h
        ;------------Выход
    mov ax, 4c00h
    mov al, 0
    int 21h
 
    end start
0
02.06.2014, 12:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2014, 12:58
Помогаю со студенческими работами здесь

Ввести с клавиатуры два слова и вывести в следующей строке второе слово
Ввести с клавиатуры два слова и вывести в следующей строке второе слово, записать в переменную Р1...

Ввести с клавиатуры строку. Вывести каждое слово в отдельной строке.
ввести с клавиатуры строку,состоящую из нескольких слов.Вывести каждое слово на экран в отдельной...

Ввести с клавиатуры строку и вывести на экран по одному слову на строке
ввести с клавиатуры строку, замемнить пробелы на ВК, вывести полученые строки на экран. ...

Ввести с клавиатуры строку символов. Составить программу для замены в данной строке всех пробелов на символ $
Ввести с клавиатуры строку символов. Составить программу для замены в данной строке всех пробелов...

Ввести с клавиатуры 5-байтовый массив символов ASCII
Привет. Можете помочь с задачкой одной: Ввести с клавиатуры 5-байтовый массив символов ASCII....

Ввести строку в InputBox, вывести количество символов в этой строке в MsgBox
Суть такая, надо написать строку в InputBox, на выходе получить количество символов в этой строке в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru