давно
Старший Модератор
31795
6196
16.10.2015, 10:38
общий
это ответ
Здравствуйте, Попушой Екатерина !
Код второго задания в приложении:
[code h=200]model tiny
maxStr equ 200
;макрос чтения символа с клавиатуры
inpChar macro
xor ax,ax
int 16h
endm
;макрос вывода строки
OutStr macro
mov ah,9
int 21h
endm
;макрос ввода строки
inpStr macro
mov ah,0ah
int 21h
endm
.code
org 100h
begin:
;выводим сообщение о вводе строки
lea dx,dbEnterS
OutStr
;вводим строку
lea dx,dbMax
inpStr
;выводим сообщение о вводе числа
lea dx,dbEnterN
OutStr
;вводим число
xor di,di;сбрасываем введенное число
mov bx,10;система счисления
;читаем один символ с клавиатуры без эхо
@@01: inpChar
cmp al,13;клавиша ENTER
jz @@02;заканчисваем ввод
;проверяем диапазон цифровых клавиш
cmp al,'0'
jl @@01;нет повторяем ввод
cmp al,'9'
ja @@01
int 29h;выводим введенную цифру
and ax,0fh;превращаем символ в число
xchg di,ax;обмениваем с ранее введенным числом
xor dx,dx
mul bx;умножаем на систему счисления
add di,axсуммируем
jmp @@01;повторяем ввод
;готовимся к проверке строк
@@02: lea si,dbStr;устанавливаем индексный регистр
cld;напрвление для строковых команд
mov cl,dbLen;загружаем длину введенной строки
xor ch,ch
xor bx,bx;сбрасываем счетчик
lea dx,dbTrue;пока считаем , что верно
@@03: lodsb;читаем один символ
cmp al,'a';проверяем "а"
jnz @@04;нет, переходим
inc bx;да увеличиваем счетчик
cmp di,bx;проверяем количество
jz @@06;да выходим из цикла
jnz @@05;нет- продолжаем цикл
@@04: xor bx,bx;сбрасываем счетчик
@@05: loop @@03;цикл проверки строки
lea dx,dbFalse;если тут, значит нет нужного количества букв"а"
@@06: OutStr;выводим строку
inpChar;ожидаем ввод и любуемся результатом
ret;выход
dbEnterS db 10,13,'Enter string:$'
dbEnterN db 10,13,'Enter number:$'
dbTrue db 10,13,'True$'
dbFalse db 10,13,'False$'
dbMax db maxStr
dbLen db ?
dbStr db maxStr dup(?)
end begin[/code]
ps:вопросы задавайте в минифоруме.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.