Консультация № 195083
30.03.2019, 10:24
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

По запросу программы пользователь вводит с
клавиатуры целое положительное десятичное число N. По сле-
дующему запросу он вводит с клавиатуры N целых трехзначных
положительных десятичных чисел, разделенных пробелами.
Программа выводит последовательность этих же чисел, но
записанных в обратном порядке и в восьмеричной системе счис-
ления.

Обсуждение

давно
Старший Модератор
31795
6196
02.04.2019, 19:58
общий
это ответ
Здравствуйте, mr.mad5!

tasm, com-file.
[code lang=asm h=300]modeL tiny,pascal
.code
org 100h
begin: mov ax,2
;Вводим количество
mov bx,1000
call inpNum,ax,bx,offset dbCount
;Запускаем цикл
mov cx,0
call main,ax,cx,bx
;Выходим из программы
xor ax,ax
int 16h
ret
dbCount db 10,13,'Enter count:$'
dbNumber db 10,13,'Enter number:$'
dbOctan db 10,13,'Octan system:$'
;подпрограмма ввода числа
inpNum proc a:word,b:word,c:word
;a = minimum
;b = maximum
;c = message
mov ah,9
mov dx,c
int 21h
xor di,di
mov si,10
@@01: xor ax,ax
int 16h
cmp al,13
jz @@03
cmp al,'0'
jb @@01
cmp al,'9'
ja @@01
xchg ax,di
xor dx,dx
mul si
cmp ax,b
jb @@02
div si
jmp @@04
@@02: xchg ax,di
push ax
int 29h
pop ax
and ax,0Fh
add di,ax
jmp @@01
@@03: cmp di,a
jb @@01
mov ax,di
@@04: ret
inpNum endp
;подпрограмма вывода числа
outNum proc a:word,b:word,c:word
;a = number
;b = system
;с = message
mov ah,9
mov dx,c
int 21h
mov si,b
mov ax,a
xor cx,cx
@@05: xor dx,dx
div si
inc cx
push dx
or ax,ax
jnz @@05
@@06: pop ax
or al,'0'
int 29h
loop @@06
ret
outNum endp
;основной рекурсивный цикл
main proc a:word,b:word,c:word
;a = count
;b = minimum
;c = maximum
call inpNum,b,c,offset dbNumber
push ax
mov ax,a
dec ax
jz @@07
call main,ax,b,c
@@07: pop ax
mov bx,8
call outNum,ax,bx,offset dbOctan
ret
main endp
end begin[/code]
Удачи!
5
Спасибо, огромное!!!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа