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

Копирование строки в область памяти несколько раз

15.12.2011, 17:04. Показов 1592. Ответов 1
Метки нет (Все метки)

Нужно скопировать строку str1 в str2 несколько раз, чтобы та размером в 50 бит заполнилась полностью:

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
MODEL   small
STACK   256
.data
str1    db  'Yes$'  
str2    db  50 DUP (?)
.code
    assume  ds:@data,es:@data
main:       
    mov ax,@data
    mov ds,ax
    mov es,ax
    
    lea si,str1 
    lea di,str2
    mov cx,4
    mov dx,4
cycl:
    rep movs str2,str1
    add dx, 4
    cmp dx, 50
    jl povt ;повторяем каждый раз пока dx меньше 50
    
    lea dx, str2 ; вывод
    mov ah,09h  ; строки str2 на
    int 21h ; экран
    jmp exit
    
povt: add cx, 4
    lea si,str1
    loop cycl
exit:   
    mov ax,4c00h
    int 21h
end main
Но на выводе все равно только "Yes", в чем ошибка?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2011, 17:04
Ответы с готовыми решениями:

На какую область памяти указывает адрес недоступной памяти
Здравствуйте! Написал программу, выводит (из PSP) сегментный адрес первого байта недоступной...

Можно ли несколько раз делитить область памяти?
Собственно, чреват ли ошибками код: int *a; a = new int; a = 1; a = 2; delete a;...

Копирование область памяти
Здравствуйте, у меня не получается прочитать/скопировать память в переменную. Я делаю .dll, так...

Копирование строки s в s1 n раз
Проблема. Копирует строку s в строку s n раз Не понимаю где ошибся. // 6.Copies.cpp:...

1
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
15.12.2011, 17:45 2
у тебя в 'YES' бакс - '$' стоит, а функция 9h выводит только до этого знака, смени на пробел и перед выводом вставь:
Assembler
1
mov byte ptr [di],'$'
вот, так:
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
.MODEL   small
STACK   256
.data
str1    db      'Yes '  
str2    db      50 DUP (?)
.code
        assume  ds:@data,es:@data
main:           
        mov  ax,@data
        mov  ds,ax
        mov  es,ax
        
        mov dx,50
        lea di,str2
povt :      mov cx,4
        lea si,str1
cycl:       rep movsb
        dec dx
        jnz povt 
        
        mov byte ptr [di],'$'
        
        lea dx, str2
        mov ah,09h
        int 21h
        mov ax,4c00h
        int 21h
end     main
Добавлено через 28 минут
я ошибся, вариант выше запишет 50 раз 'YES '
с помощью movsb ты своё задание не выполнишь... у тя же залить 50 байт, а она сделает 52, а это контролировать ты уже не сможешь.
надо делать вручную, так:
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
.model small
.data
str1    db      'Yes '  
str2    db      51 DUP ('$')
.code
main:           
        mov ax,@data
        mov ds,ax
        
        mov cx,50
        lea di,str2
n0:     lea si,str1     
n1:     mov al,byte ptr[si]
        mov byte ptr[di],al
        inc si
        inc di
        cmp si,4
        jne nx
            loop n0
            jmp next    
nx:     loop n1
        
next:       lea dx, str2
        mov ah,09h
        int 21h
        mov ax,4c00h
        int 21h
end     main
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2011, 17:45
Помогаю со студенческими работами здесь

Копирование строки s в новую строку n раз
На картинке задание, нужно написать программу, вводишь текст с клавиатуры, этот текст копируется в...

Функция выполняющая копирование строки s в строку s1 n раз
Функция Copies(s,s1,n) Назначение: копирование строки s в строку s1 n раз. Не разрешили...

Помогите сделать, копирование строки s в строку s1, n раз, с помощью Copies(s,s1,n)
копирование строки s в строку s1, n раз, с помощью Copies(s,s1,n)

UPDATE одной строки несколько раз
UPDATE stock_metal AS s JOIN workpiece AS w ON s.Id = w.Type_metal JOIN type_work AS t ON w.Id...


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

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

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