- •24. Ввод символа. Определить его позицию в строке и вывести на экран
- •Int 21h
- •30. Найти сумму элементов четных строк матрицы.
- •37. Перевод числа из одной системы счисления в другую. Данные вводить с клавиатуры.
- •Int 21h
- •42. Работа с окнами в текстовом режиме.
- •Inc si ;перейти к следующему элементу
- •Int 21h
- •59. Арифметические операции со знаковыми и беззнаковыми числами.
- •60. Процедуры в ассемблере, передача параметров, возврат значений.
- •61. Операции с файлами: создание, открытие, закрытие.
- •Int 21h ;открываем файл
- •Int 21h ;закрываем файл
- •62. Операции с файлами: чтение и запись данных.
- •Int 13h ;
- •Int 25h ;функция чтения секторов
Inc si ;перейти к следующему элементу
loop space
mov si, offset outbuf[3];адрес буфера для вывода
mov bx, 10 ;коэффициент для деления
make_str:
xor ah,ah ;ah=0
div bl ;al=ax/bl
or ah,30h ;преобразовать цифру в символ
dec si ;перейти к следующему символу
mov [si],ah ;сохранить в строке
test al, al ;проверить ax=0
jnz make_str ;если не равен, то далее
mov ax, 0900h ;вывести число
mov dx, offset outbuf
int 21h
pop cx ;извлечь используемые регистры из стека
pop si
pop bx
pop ax
ret
printNum endp
readNum proc
push bx
push cx
push dx
push si
push di
push bp
mov si, offset inbuf
mov ax,0a00h
mov dx,si
int 21h
xor cx,cx
inc si
mov cl,byte ptr [si]
jcxz convert_word_err
add si,cx
mov ax,1
mov bp,10
xor bx,bx
mov di,ax
make_word:
mov dl,byte ptr [si]
cmp dl,'0'
jb convert_word_err
cmp dl,'9'
ja convert_word_err
and dx,000fh
mul dx
test dx,dx
jnz convert_word_err
add bx, ax
jc convert_word_err
mov ax, di
mul bp
mov di,ax
dec si
loop make_word
mov ax,bx
pop bp
pop di
pop si
pop dx
pop cx
pop bx
ret
convert_word_err:
mov ax,0900h
mov dx,offset mesError
int 21h
mov ax,0700h
int 21h
mov ax,4c00h
int 21h
readNum endp
inputLim proc
mov ax,0900h
mov dx, offset limInput
int 21h
call readNum
mov left,al
call readNum
mov right,al
ret
inputLim endp
inputMas proc
mov ax,0900h
mov dx, offset massInput
int 21h
mov cx,mas_num
mov bx,0
next_el:
call readNum
mov mass[bx],al
mov ax,0900h
mov dx, offset ent
int 21h
add bx,1
loop next_el
ret
inputMas endp
counting proc
mov cx, mas_num
mov bx, 0
mov al, 0
cmp_lim:
mov dl, left
cmp mass[bx], dl
jge test2
add bx, 1
mov count, al
loop cmp_lim
jmp end
test2:
mov dl, right
cmp mass[bx], dl
jle plus
add bx, 1
mov count, al
loop cmp_lim
plus:
add al, 1
add bx, 1
mov count, al
loop cmp_lim
end:
ret
counting endp
start:
mov ax,@data
mov ds,ax
call inputMas
call inputLim
call counting
mov ax,0900h
mov dx, offset doneMess
Int 21h
mov al,count
call printNum
end start