Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 17:28   #1
olgasssssss
Новичок
Джуниор
 
Регистрация: 08.12.2010
Сообщений: 1
По умолчанию Ввод строки и числа, вывод усеченной подстроки - как?

Помогите решить лабораторную: необходимо задать вводом с клавиатуры строки и числа N, а потом вывести на экран первые N символов введенной строки. Не могу ввести второй параметр (N). Если ограничивать количество символов константой, то все работает.... а вот ввод второго парамета? Помогите, пожалуйста!

Текст программы:

; Вводится текстовая строка и некоторое число N. Необходимо вывести первые N символов текстовой строки

.model small

.data
stdin equ 0
stdout equ 1
a1 db 80 dup (0)
len_a1 dw 0

info1 db 'Ведите строку: '
len1 equ $-info1
info2 db 'Вывод результата: '
len2 equ $-info2
info3 db 'Вввод числа: '
len3 equ $-info3

a2 db ' '
len_a2 equ $-a2
a3 db 80 dup(0) ;массив
a5 dw 0
len_end dw 0
len_my dw 10

.code
myp proc
mov ax, @data ;аккумулятор eax/ax/ah/al (Accumulator register)
mov ds, ax ;Сегмент данных
mov es, ax ;шесть регистров сегментов: cs, ds, ss, es, fs, gs;

;Ввод строки
mov ah, 40h
mov BX, stdout
mov cx, len1
mov dx, offset info1 ; напечатать строку
int 21h

mov ah, 3fh
mov bx, stdin
mov cx, 80
mov dx, offset a1
int 21h
dec ax
dec ax
mov len_a1, ax

;Ввод числа
mov ah, 40h
mov BX, stdout
mov cx, len3
mov dx, offset info3 ; напечатать строку
int 21h

mov ah, 3fh
mov bx, stdin
mov cx, 82
mov dx, offset a2 ;len_my
int 21h

mov len_my,7


cld ;сброс в ноль флага направления df


; Загрузка адресов строк
lea si, a1
lea bx, a3
mov di, 0
; mov bx, 7


Sload:
lodsb
mov [bx][di], al
inc di

mov dx,di
cmp dx,len_my
je Exit
loop Sload

job:




Exit:

;Вывод результата
mov ah, 40h
mov BX, stdout
mov CX, len2
mov dx, offset info2
int 21h

lea di, a3 ;В отличие от offset команда lea допускает индексацию операнда, что позволяет более гибко организовать адресацию операндов

mov ah, 40h
mov BX, stdout
mov dx, offset a3
int 21h

mov ah, 40h
mov BX, stdout
mov dx, offset a2
int 21h



mov ax, 4C00h
int 21h
myp endp

.stack
dw 32 dup(?)
end myp

Последний раз редактировалось olgasssssss; 08.12.2010 в 17:51.
olgasssssss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод с клавиатуры два целых числа без знака и вывод на экран их сумму. gelya_17 Помощь студентам 5 18.10.2010 10:31
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02
Degree d^n, как организовать ввод\вывод? sig_GB Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 21.04.2010 20:29
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2010 08:48
Ввод и вывод числа Strogg Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 23.03.2009 17:44