Отладка сборки x-86 с помощью dosbox

поскольку я до сих пор не знаю метода для написания и компиляции программ связанных списков x-86 через ide (насколько мне известно, emu8086 не поддерживает структуру связанного списка) Я написал это в блокноте и скомпилировал с помощью dosbox код компилируется без ошибок, и когда я запускаю через g4e (адрес mov ah, 4ch Мне нужно ввести число, и программа застревает

вот мой код

node struc

 value db ?
 next dw ?

node ends


dseg segment

list node <'1',3h>
    ORG 3h
    node <'3',6h>
    ORG 6h
    node <'7',9h>
    ORG 9h
    node <'9',-1> 
searchInt db 0
counter1 db 0
welcome db 'Please enter a number between 1-10$'

dseg ends          

sseg segment stack
db 10h dup (?)    
sseg ends

cseg segment
assume cs:cseg,ds:dseg,ss:sseg

start:
   mov ax,dseg
   mov ds,ax
   lea si,list
   mov dx,offset welcome
   call print
   userInput:
   xor ax,ax
   mov ah, 1
   int 21h

   cmp al,30h
   jb userInput
   cmp al,39h
   ja userInput
   jmp searching

   searching: 
   lea si,list
   cmp [si].value,al
   je counter
   cmp [si].value,-1
   je sof
   mov si,[si].next
   jmp searching

   counter:
   inc counter1
   cmp [si].value,-1
   je sof
   jmp searching


   print proc ;procedure for printing messages 
   mov ah,9h
   int 21h
   MOV dl, 10
   MOV ah, 02h
   INT 21h
   MOV dl, 13
   MOV ah, 02h
   int 21h ;start a new line
   ret
   print endp

   sof:
   mov ah,4ch
   int 21h

 cseg ends
 end start

может кто-нибудь указать, в чем моя проблема?

Проблема в lea si,list. в начале searching. Это всегда устанавливает si в начало списка. и отменяет mov si,[si].next.

rkhb 06.06.2018 22:27

спасибо, я уже удалил эту строку, так как в начале я уже написал эту строку. теперь происходит что-то странное, время от времени он внезапно принимает ввод пользователя, что делает этот код очень странным

Stas1986 06.06.2018 22:32

Не удаляйте его, а перемещайте непосредственно перед первым jmp searching. Следующей проблемой являются два cmp [si].value,-1, которые должны быть cmp [si].next,-1.

rkhb 06.06.2018 22:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
211
0

Другие вопросы по теме