Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
1
TASM

Копирование строк не справляюсь!!!

05.12.2010, 09:22. Показов 1643. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех, изучаю ассемблер совсем не давно а время поджимает, помогите кто может со следующем задание:
Ввод строк с клавиатуры и команды пакетной обработки (строковые команды) в языке Assebmler. С клавиатуры вводятся только символы латинского алфавита. При выполнении каждого задания необходимо использовать команды пакетной обработки. Ввести с клавиатуры строку, создать новую строку из N последовательных копий введенной. Должна быть предусмотрена возможность изменить значение N.
Отдельное задание: оформить в виде функции, корректно передав ей, параметры через стек.

Заранее блогадарен если кто поможет
я тут наброса кое что но врятли это верно:
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
DATASEG SEGMENT;сегмент данных
    Text1    DB 'Vvedite stroku->',10,13,'$'
    P_N      DB ?
    Text2   DB 'Vvedennaya stroka->','$'
    Str1     DB 255 dup(?)
    tab      DB 10,13,'$'
    Str2     DB 255 DUP(?)
    
DATASEG ENDS
 
CODSEG SEGMENT;сегмент кода
    ASSUME CS:CODSEG, DS:DATASEG, SS:CODSEG, ES:CODSEG
    ORG 100h
BEGIN:
    ;главная программа
    MOV   ax,DATASEG
    MOV   ds,ax
    CALL  IN_STR
    CALL  Vvod_Str
;   CALL  IN_REZ
    JMP EXIT
 
    IN_STR PROC NEAR ;ввод сообщения
    MOV   ah,09h
    MOV   dx,OFFSET Text1
    INT   21h
    RET
    IN_STR ENDP
 
    Vvod_Str PROC NEAR
    MOV   ah,     0ah ; вводим строку
           MOV   dx,     offset  Str1
    INT   21h
    lea     si,     offset  Str1                  
    lea     di,     offset  Str2
    mov cx,10
 
    mov di,si
    rep movsb
 
    MOV   ah,9
    MOV   dx,OFFSET Str2
    INT   21h
    
    RET
    Vvod_Str ENDP
                    
EXIT:           ;выход в ДОС
    MOV ah,4ch
    INT 21h
 
    RET
    CODSEG ENDS
END BEGIN
Добавлено через 15 часов 49 минут
ни кто не знает или ни кто не может помочь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2010, 09:22
Ответы с готовыми решениями:

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки,...

Копирование строк
Дорогие программисты у меня есть задача (Составить программу производящую копирование строки из 15...

Копирование строк
Задать с клавиатуры строку символов ASCII. В сегменте данных зарезервировать соответствующее число...

Копирование диапазона строк из одной книги в другую, при разном количестве строк
Добрый день ! Вопрос такой: есть две книги(например 7.1 и 7.2 ) с расшифровками счетов, счета...

6
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
05.12.2010, 13:52 2
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
.model small
 
DATA SEGMENT;сегмент данных
        Text1    DB 'Vvedite stroku->',10,13,'$'
        P_N      db 0
        Text2   DB 'Vvedennaya stroka->',10,13,'$'
    Text3   DB 'Vvedite N->',10,13,'$'
        Str1     DB 255, ?, 255 dup(?)
        tab      DB 10,13,'$'
        Str2     equ $
        
DATA ENDS
 
.code
assume ds:DATA
BEGIN:
    ;главная программа
    MOV   ax,DATA
    MOV   ds,ax
    mov   es, ax
    push offset Text1
    CALL  out_STR
    push offset Str1
    call in_str
    push offset tab
    call out_STR
    push offset Text2
    call out_STR
    xor bx, bx
    mov bl, byte ptr [Str1+1]
    mov byte ptr [Str1+bx+2], '$'
    push offset Str1+2
    call out_str
    push offset tab
    call out_STR
    push offset Text3
    call out_STR
    mov ah, 1
    int 21h
    ; желательно проверить что ввели
    xor ah, ah
    sub al, 30h
    mov P_N, al
 
    push offset Str1
    push ax
    push offset Str2
    call cat_STR
 
    mov al, P_N
    mov bl, byte ptr [Str1+1]
    mul bl
    mov bx, ax
    mov byte ptr [Str2+bx], '$'
    push offset tab
    call out_STR
    push offset Str2
    call out_STR
 
    xor ax, ax
    int 16h
    MOV ah,4ch
    INT 21h    ;выход в ДОС
 
 
    out_STR PROC NEAR ;вывод сообщения
    push  bp
    mov   bp, sp
    MOV   ah,09h
    MOV   dx, [bp+4]
    INT   21h
    pop   bp
    RET   2
    out_STR ENDP
 
    in_STR PROC NEAR ;ввод строки
    push  bp
    mov   bp, sp
    MOV   ah,0ah
    MOV   dx, [bp+4]
    INT   21h
    pop   bp
    RET   2
    in_STR ENDP
 
outpt_str   equ [bp+4]
count       equ [bp+6]
inpt_str    equ [bp+8]
 
    cat_STR proc
    push    bp
    mov bp, sp
    mov cx, count
    mov di, outpt_str
@cat1:
    push    cx
    mov si, inpt_str
    xor ch, ch
    mov cl, byte ptr [si+1]
    add si, 2
    rep movsb
    pop cx
    loop    @cat1
    pop bp
    ret 6
    cat_STR endp
 
end begin
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
06.12.2010, 20:06  [ТС] 3
не компилируется ошибки в строках с push offset

Добавлено через 13 минут
в чем проблема подскажешь?
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
06.12.2010, 20:17 4
SergProgC++, чем компилируешь? непонятная проблема, я иcпользовал tasm
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
06.12.2010, 20:33  [ТС] 5
Цитата Сообщение от vital792 Посмотреть сообщение
SergProgC++, чем компилируешь? непонятная проблема, я иcпользовал tasm
я с помощью масм компилирую

Добавлено через 3 минуты
а какие ключи в тасм надо писать чтобы все норм было
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
06.12.2010, 22:00 6
SergProgC++, я попробовал твоим masm611 - все прекрасно, если вначале поставить директиву
.186

Цитата Сообщение от SergProgC++ Посмотреть сообщение
а какие ключи в тасм надо писать чтобы все норм было
никаких. Все по умолчанию
1
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
07.12.2010, 19:39  [ТС] 7
Точно, все супер. Реально помог!!! огромное спасибо
0
07.12.2010, 19:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2010, 19:39
Помогаю со студенческими работами здесь

Сравнение строк в нескольких файлах excel, копирование несовпадающих строк и их вывод в сводный файл
Добрый день, только только начал разбираться с VBA в excel, поэтому прошу помощи (схожие темы...

Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена
Пожалуйста с этим заданием. Написать программу, которая описывает четыре массива. Три первых...

не справляюсь с задачей
задан массив матриц, вывести те из них, который не содержат наперед заданного фрагмента

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru