Вопрос по ассемблеру про массив записей

программирование обучение assembler

Дан массив записей ввести с клавиатуры число и поместить к примеру в первые 3 эл-та массива затем вывести на экран один из элементов массива ректордов
ВВожу число а оно выодит совершено другое число
не уверен можно ли делать вот так: setfield sec b[0],ax

.model small
.stack 100
myzapisi record deg:9,min:6,sec:6
.data
b myzapisi 5 dup (<,,>)
buffer db 11 dup (?),'$'
stroka db 8 dup(?),'$' ;число преобразуем в строку
buffer1 db 3 dup (?),'$'
nl db 10,13,'$'
.code
.startup

.386
assume ss:@stack, ds:@data, cs:@code
push ds
push 0
mov ax, @data
mov ds, ax
mov es, ax

mov ah, 3fh ;vvod v bufer
mov bx, 0
mov cx, 2
mov dx, offset buffer1
int 21h

;;atoi iz stroki v cislo dlea vvoda v massiv record
mov si, offset buffer1
xor dx, dx
begin1:
lodsb
test al, al
jz finish1
sub ax, '0'
shl dx, 1
add ax, dx
shl dx, 2
add dx, ax
jmp begin1
finish1:
mov ax, dx

setfield sec b[0],ax
setfield sec b[1],ax
setfield sec b[2],ax
xor ax,ax
getfield min ax,b[0]

;;itoa iz cisla v stroku dlea vivoda
lea si,stroka ;на начало строки
mov byte ptr[si],' '
lea di,stroka+1
cld
mov cx,4
rep movsb
mov cx,10

a1:cmp ax,10 ;0-различий нет 1-есть
jb a2 ;переходит если бит =1
xor dx,dx
div cx
or dl,30h
mov [si],dl
dec si
jmp a1

a2:or al,30h
mov [si],al

mov ah,9
mov dx,offset nl ;;si
int 21h
;;vivod
mov ah,9
mov dx,offset si ;;ili stroka no si eto adres
int 21h
mov ah, 4ch
int 21h
end

Примечание:
Cthulchu если ты меня проконсультируешь то на 228-228-064
Максим Новиков даже не знаю , у меня задачка посложнее но это так я написал просто чтоб разобраться
Ответы:
аську дай. буду консультироваться с тобой по асму:)
Судя по написанию вопроса, вы где-то в коде пропустили какой-нибудь знак.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.