Ёлочка,игрушки,подарок - Assembler
Формулировка задачи:
Имеется ёлочка,а как под неё положить подарок и повесить на неё игрушки?
DATA SEGMENT txt1 db ' H E L L O', 13, 10, '$' txt2 db ' Happy New Year 2017, SAMARA', 13, 10, '$' txt3 db 'WITH BEST REGARDS FROM ELENA', 13, 10, '$' stroka db (?) stolb db (?) DATA ENDS STCK SEGMENT STACK DB 256 DUP(?) STCK ENDS ASSUME CS:CODE, DS:DATA, SS:STCK CODE SEGMENT ;------- Процедура CURSOR устанавливает курсор в нужную позицию --------------- CURSOR PROC ; начало процедуры CURSOR MOV AH, 02H ; AН<-код функции перемещения курсора MOV BH, 00H ; номер страницы MOV DH, stroka ; DH <- строка MOV DL, stolb ; DL <- столбец INT 10H ; прерывание BIOS RET ; корректное завершение процедуры CURSOR ENDP ; конец процедуры CURSOR ;--- Процедура TABLE, выводит символ "залитая точка" на экран по вертикали ---- TABLE PROC ; начало процедуры TABLE MOV AH, 02H ; функция перемещения курсора MOV BH, 00H ; страница 0 INC DH ; увеличение dh на единицу INT 10H ; прерывание BIOS MOV AH, 09H ; функция вывода символа на экран MOV AL, 7Ch ; символ '|' MOV BH, 00H ; страница 0 MOV BL, 0Eh ; желтый на черном MOV CX, 01H ; один символ INT 10H ; прерывание BIOS RET ; корректное завершение процедуры TABLE ENDP ; конец процедуры TABLE ;----------------------- Вывод заданного текста ------------------------------- TEXT PROC ; процедура вывода TEXT MOV AH, 09H ; функция вывода символа INT 21H ; прерывание DOS RET ; корректное завершение процедуры TEXT ENDP ; конец процедуры TEXT ;--------------- Процедура реализации задания программы ----------------------- MAIN PROC ; начало процедуры MAIN MOV AH, 00H ; функция задания режима экрана MOV AL, 03H ; ЦВ текстовый, 25х80 INT 10H ; прерывание BIOS MOV AH, 06H ; функция прокрутки вверх MOV AL, 00H ; очистка всего экрана MOV BH, 00000110B ; ярко - желтый MOV CX, 0000H ; верхняя левая позиция MOV DX, 184FH ; нижняя правая позиция INT 10H ; прерывание BIOS ;----------------------- Текст ---------------------------------------------- MOV AH, 06H ; функция прокрутки вверх MOV AL, 01H ; 1 строка MOV BH, 00000110B ; ярко - желтый MOV CX, 0015 ; верхне левая позиция MOV DX, 001 ; нижне правая позиция INT 10H ; прерывание BIOS MOV stroka, 00H ; установка курсора в заданную позицию: MOV stolb, 8H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR LEA DX, txt1 ; вывод текста txt1 CALL TEXT ; с помощью процедуры TEXT ;----------------------------------------------------------------------------- MOV AH, 06H ; функция прокрутки вверх MOV AL, 01H ; 1 строка MOV BH, 00000001B ; ярко - желтый MOV CX, 0204H ; верхне левая позиция MOV DX, 0225H ; нижне правая позиция INT 10H ; прерывание BIOS MOV stroka, 02H ; установка курсора в заданную позицию: MOV stolb, 5H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR LEA DX, txt2 ; вывод текста txt2 CALL TEXT ; с помощью процедуры TEXT ;----------------------------------------------------------------------------- MOV AH, 06H ; функция прокрутки вверх MOV AL, 01H ; 1 строка MOV BH, 00000010B ; ярко - желтый MOV CX, 1400H ; верхне левая позиция MOV DX, 1450H ; нижне правая позиция INT 10H ; прерывание BIOS MOV stroka, 14H ; установка курсора в заданную позицию: MOV stolb, 9H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR LEA DX,txt3 ; вывод текста txt3 CALL TEXT ; с помощью процедуры TEXT ;----------- Рисование гор. границ рамки(верхняя и нижняя) --------------------- MOV stroka, 04H ; установка курсора в заданную позицию: MOV stolb, 3H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 5Fh ; символ "-" MOV BH, 00H ; страница 0 MOV BL, 0Eh ; желтый MOV CX, 28H ; 40 символов INT 10H ; прерывание BIOS MOV stroka, 13H ; установка курсора в заданную позицию: MOV stolb, 3H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 5Fh ; символ "-" MOV BH, 00H ; страница 0 MOV BL, 0Eh ; желтый MOV CX, 28H ; 40 символов INT 10H ; прерывание BIOS ;----------- Рисование верт. границ рамки(левая и правая) --------------------- MOV stroka, 04H ; установка курсора в заданную позицию: MOV stolb, 03H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV DL, 03H ; столбец 20 REPT 15 ; цикл с 15 повторениями CALL TABLE ; вызов процедуры TABLE ENDM ; конец цикла MOV stroka, 04H ; установка курсора в заданную позицию: MOV stolb, 12H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV DL, 2AH ; столбец 60 REPT 15 ; цикл с 15 повторениями CALL TABLE ; вызов процедуры TABLE ENDM ; конец цикла ;--------------------- Рисование елки ------------------------------------------ MOV stroka, 09H ; установка курсора в заданную позицию: MOV stolb, 16H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 0FH ; символ "солнышко" MOV BH, 00H ; страница 0 MOV BL, 10001110B ; мигающий желтый MOV CX, 01H ; 1 символ INT 10H ; прерывание BIOS ;----------------------------------------------------------------------------- MOV stroka, 0AH ; установка курсора в заданную позицию: MOV stolb, 15H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000010B ; зеленый MOV CX, 03H ; 3 символа INT 10H ; прерывание BIOS ;----------------------------------------------------------------------------- MOV stroka, 0BH ; установка курсора в заданную позицию: MOV stolb, 14H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000010B ; зеленый MOV CX, 05H ; 5 символов INT 10H ; прерывание BIOS ;----------------------------------------------------------------------------- MOV stroka, 0CH ; установка курсора в заданную позицию: MOV stolb, 13H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000010B ; зеленый MOV CX, 07H ; 7 символов INT 10H ; прерывание BIOS ;----------------------------------------------------------------------------- MOV stroka, 0DH ; установка курсора в заданную позицию: MOV stolb, 12H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000010B ; зеленый MOV CX, 09H ; 7 символов INT 10H ; прерывание BIOS ;----------------------------------------------------------------------------- MOV stroka, 0EH ; установка курсора в заданную позицию: MOV stolb, 16H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000110B ; желтый MOV CX, 01H ; 1 символов INT 10H ; прерывание BIOS ;-------------------------------------------------------------------------------- MOV stroka, 16H ; установка курсора в заданную позицию: MOV stolb, 12H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, 2AH ; символ "*" MOV BH, 00H ; страница 0 MOV BL, 00000111B ; Белый MOV CX, 00H ; 0 символов INT 10H ; прерывание BIOS ;-------------------------------------------------------------------------------------- MOV AH, 00H ; режим INT 16H ; ожидания RET ; корректное завершение процедуры MAIN ENDP ; конец процедуры main ;--------------- Конец процедуры реализации задания программы ---------------------------- START: MOV AX, DATA MOV DS, AX CALL MAIN MOV AL, 0 MOV AH, 4CH INT 21H CODE ENDS END START
кто нибудь подскажите как это сделать
Решение задачи: «Ёлочка,игрушки,подарок»
textual
Листинг программы
;-------------------------------------------------------------------------------------- MOV stroka, 0EH ; установка курсора в заданную позицию: MOV stolb, 12H ; заносим значение строки и столбца CALL CURSOR ; вызов процедуры CURSOR MOV AH, 09H ; функция вывода символа MOV AL, '#' ; символ "#" MOV BH, 00H ; страница 0 MOV BL, 00000111B ; Белый MOV CX, 02H ; 0 символов INT 10H ; прерывание BIOS ;--------------------------------------------------------------------------------
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д