Работа с базами структур - заполнение с клавиатуры и вывод на экран - 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

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы