molko
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Prober и aridtree большое спасибо! Добавлено: еще маленькая просьба есть. Нужно реализовать ввод с клавиатуры и вывод массива состоящего из целых чисел, я сделал тока ввод и вывод одного целого числа. не знаю как сделать цикл, не подскажете как это сделать? да еще вначале необходимо вводить размерность массива а потом уже ввод элементов и их вывод Код: Код: .MODEL tiny .CODE org 100h ; ввод с клавиатуры целого числа и вывод его на экран _start: ; ввод числа в регистр AX call ReadInteger mov A,ax ; перевод строки mov ah,09h lea dx,crlf int 21h ; вывод заголовка mov ah,09h lea dx,res int 21h ; вывод числа из AX mov ax,A call WriteInteger ret ; ввод 10-числа в регистр AX ReadInteger proc push cx ; сохранение регистров push bx push dx mov fl,0 ; флаг отрицательного числа xor cx, cx mov bx, 10 call ReadChar ; ввод первого символа cmp al,'-' ; если минус - установить флаг je nnn jmp nn nnn: mov fl,1 read: call ReadChar ; ввод очередного символа nn: cmp al, 13 ; Enter ? je done ; да - > завершение sub al, '0' ; нет -> перевод цифры char -> int xor ah, ah xor dx, dx xchg cx, ax mul bx add ax, cx xchg ax, cx jmp read done: xchg ax, cx cmp fl,1 je eee jmp ee eee: neg ax ee: pop dx pop bx pop cx ret ReadInteger endp ; ввод одного символа ReadChar proc mov ah,1 int 21h ret ReadChar endp ; вывод 10-числа WriteInteger proc near push ax push cx push bx push dx xor cx, cx mov bx, 10 ; число отрицательное? cmp ax,0 jl ddd ; если - да jmp divl ; если - нет ; вывести минус и поменять знак ddd: push ax mov dl, '-' mov ah, 2 int 21h pop ax neg ax ; получить 10-цифры и поместить их в стек, ; в cx - количество полученных цифр divl: xor dx, dx idiv bx push dx inc cx cmp ax,0 jg divl ; достать из стека, перевести в код ASSII и вывести popl: pop ax add al, '0' call WriteChar loop popl pop dx pop bx pop cx pop ax ret WriteInteger endp ; вывод одного символа WriteChar proc push ax push dx mov dl, al mov ah, 2 int 21h pop dx pop ax ret WriteChar endp A dw 67 fl dw ? res db 'res', 0dh,0ah,'$' crlf db 0dh,0ah,'$' end _start |
|