Работа с базами структур - заполнение с клавиатуры и вывод на экран - Assembler
Формулировка задачи:
Пытаюсь разбираться в ассемблере.
Не могу понять как работать со структурами. Имеется книга (рудаков,финогенов) но там ничего нету о структурах. О них только в учебнике юрова немного расписано но и то не выходит ничего может потому что расписано для masm а я пишу на tasm. Так вот Прошу вас помоч мне научиться пользоваться базами структур. Итак, хочу научиться заполнять их с клавиатуры и вводить их на экран. Прикрепляю код
.386 text segment use16 assume CS:text,DS:data worker struc ;informaciyaao sotrudnike nam db 15 dup (' '),'$' ;familiya, imya, otchestvo sex db 15 dup (' '),'$' ;pol age db 15 dup (' '),'$' ;vozrast worker ends cls proc ;очистка экрана mov ah, 00h mov al, 03h int 10h ret cls endp eoe proc ;Выбор Enter или Eprint mov ah,09h mov dx,offset msgenter int 21h mov ah,00h ; int 16h ;обрабатываем нажатие на клавиатуру cmp al,13 ;Enter je begin cmp al,27 ;Eprint je exit ret eoe endp probel proc ;Переход на новую строку mov ah,09h mov dx,offset prob int 21h ret probel endp info proc mov dx,dx MOV AH, 0Ah ;AH = номер функции 0Аh MOV DX, offset buf ;DX = адрес буфера INT 21h ;вызов функции 0Ah ret info endp print proc ; Подготовка к выводу на экран mov ah,09h int 21h ret print endp begin: call cls getdata: ;Кидаем данные из сегмента даты в регистр ds mov AX,data mov DS,AX getmenu: ;Выводим меню mov dx, offset menu call print predzapros: mov dx,offset cifra call print jmp zapros exit: ;Выход mov AH,4Ch mov AL, 0 int 21h error: mov dx,offset cifra2 call print jmp zapros zapros: mov ah,00h ; int 16h; обрабатываем нажатие на клавиатуру cmp al,27 je exit ; Если Eprint то выход .. нет - то смотрим дальше cmp al,'1' ;| Проверка на ввод цифер | jb error ;| если ниже 0 | cmp al,'6' ;| | ja error ;| если выше 9 то переход| cmp al,'6' ; если 6 то выход je exit cmp al,'1' je newzapis cmp al,'3' call cls mov cx,10 je prosmotr newzapis: call cls mov dx,offset nazvtov call print call info mov dx,offset cenatov call print call info mov dx,offset izgtov call print call info call probel jmp pereval prosmotr: je pereval pereval: call eoe text ends data segment use16 menu db 10,13,'************************************* ' db 10,13, '* 1 - Dobavit zapis ' db 10,13, '* 2 - Naiti ' db 10,13, '* 3 - Prosmotr ' db 10,13, '* 4 - izm ' db 10,13, '* 5 - Ydalit vse ' db 10,13, '* Eprint - Vixod ' db 10,13, '*************************************','$' cifra db 10,13,10,13,'Vvedite cifry:$' cifra2 db 10,13,'Oshibka vvoda! Vvedite cifry:$' StrWork worker <> ;rabochaya struktura dlya razlichnyx promezhutochnyx manipulyacij mas_sotr worker 10 DUP (<>) ;massiv struktur prob db 10,13,'','$' msgenter db 10,13,'' db 10,13,'Enter - V glavnoe menu' db 10,13,'Eprint - Vihod','$' nazvtov db 10,13,'Vvedite nazvanie tovara: ','$' cenatov db 10,13,'Vvedite ceny tovara: ','$' izgtov db 10,13,'Vvedite izgotovitelya tovara: ','$' buf db 15 ;выделяем буфер для 16 вводимых символов data ends stk segment stack db 256 dup (0) stk ends end begin
Решение задачи: «Работа с базами структур - заполнение с клавиатуры и вывод на экран»
textual
Листинг программы
mov al,[bx].sex mov al,[bx+si].age