Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста, прога не работает.....

66K
25 сентября 2011 года
Dania89
3 / / 18.01.2011
:confused: Помогите у меня не работает прога, по-моему я уже все варианту перепробовала, не могу понять в чём дело!!!!!!!!!!!!!!!!!

.386
.model flat, stdcall
option casemap: none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib

.data
dialog db 'Введите строку', 0ah, 0dh, '$' ; Диалог с пользователем
buffer1 db 100 dup (0), '$' ; Буфер в который будет записана строка в нижнем регистре
buffer2 db 100 dup (0), '$' ; Буфер в который будет записана строка в верхнем регистре
buffer2 db 100 dup (0), '$' ; Буфер в который будет записаны символы не соответствующие алфавиту

.code
Start:
;---Вывод диалога на экран:
mov ah, 09h
lea dx, dialog ; Вывод диалога на экран
int 21h ; Вызов прерывания DOS

;---Ввод символов
mov bx, 0
mov cx, 32h
lea dx, buffer1 ; Запись строки в буфер
mov ah, 3fh ; Запрос на ввод
int 21h ; Вызов прерывания DOS
;---Переводим символы строки в нижний и верхний регистр:
call Preobrazovanie

;---Вывод результата на экран:
call next
mov ah, 09h ; Функция 21 прерывания вывода строки символов DOS
lea dx, buffer2 ; Запись в буфер
int 21h
call next

;---Выход из программы:
call getch
mov ax,4c00h ; Функция 21 прерывания DOS выхода из программы
int 21h ; Вызов прерывания DOS

Preobrazovanie proc
push dx
push bx
push cx
push si

;--------Преобразовываем символы исходной строки в верхний регистр
mov si, 0 ; Регистр si позиция текущего символа
mov ax, 0

lable1:
mov al, [buffer1+si] ; Считываем текущий символ в исходной строке
cmp al, 97 ; Сравниваем его с ANSII код с 97 (буква 'a')
jb n1 ; Если код символа меньше кода 97, значит он не в нижнем регистре,
; переходим на метку n1
cmp al, 122 ; Сравниваем его ANSII код с 122 (буква 'z')
ja n2 ; Если код символа больше кода 122, значит это не буква
; переходим на метку n2
sub al, 32 ; Иначе отнисаем 32, переводим буквы в верхний регистр

n1:
mov [buffer2+si] ; Копируем текущий символ в результирующую строку
inc si
cmp al, ah ; Сравниваем прочитанный символ с 0
jne lable1 ; Пока не встречается 0, продолжаем преобразование строки

n2:
mov [buffer3+si] ; Копируем в буфер текущий символ, который не является буквой
inc si
cmp al, ah ; Сравниваем прочитанный символ с 0
jne lable1 ; Пока не встречается 0, продолжаем преобразование строки

Preobrazovanie endp

;-----------------------------------

;процедура - ожидание нажатия клавиши
getch proc
mov ah,01h
int 21h
ret
getch endp
;----------------------------


END Start
7
25 сентября 2011 года
@pixo $oft
3.4K / / 20.09.2006
Парочка вопросов только,если позволите:
0)Что тема по MAsm'у делает в ветке про C/C++/C#?
1)И как же она не работает?Ни задания,ни примеров работы,ни строчки/области,где что-то не получается…

P.S.От увеличения количества восклицательных знаков желание помочь вам вовсе не возрастёт.А то и наоборот
66K
25 сентября 2011 года
Dania89
3 / / 18.01.2011
Ой, sorry, немного ни по адресу, ну а задание такое. Нужно перевести буквы из нижнего регистра в верхний, но он выдаёт мне ошибку, я уже исправляла и через LODS пробовала, что-то как-то никак....................((((((((((((((((
66K
25 сентября 2011 года
Dania89
3 / / 18.01.2011
Цифры и символы должны копироваться в отдельный буфер, выводится на экран должна только изменённая строка, которую вводил пользователь.
316
26 сентября 2011 года
Alm3n
889 / / 29.05.2009
Masm32 не в курсе про прерывания DOS. Либо без них, либо использовать Tasm.
7
26 сентября 2011 года
@pixo $oft
3.4K / / 20.09.2006
Alm3n:MAsm-то в курсе…Вот только Windows(если она не 9х,конечно) не по душе такие вот прямые вызовы

Сразу код не смотрел,а теперь заметил:«include \masm32\include\kernel32.inc» и тут же «int 21h».Разорвало
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог