Инструкция по сравнению языка ассемблера не работает - PullRequest
0 голосов
/ 27 декабря 2018
Process:
 call cScreen ; clear screen

 mov ah,09h
 lea dx,msg1
 int 21h

 mov dl,10
 mov ah,2
 int 21h

 mov dl,13
 mov ah,2
 int 21h

 mov ah,2
 mov dl,msg2
 int 21h 

 mov cx,control
loading:
 mov ah,2
 mov dl,msg2
 int 21h
 loop loading

;set cursor
 mov ah,2
 mov bh,0
 mov cx,4
 mov dh,2
 mov dl,10
 int 10h

 mov ah,2
 mov dl,msg2
 int 21h

 mov ah,9
 lea dx,msg1
 int 21h

 call Delay

 inc control

 cmp control,10
 jne Process

Я пытаюсь выполнить панель процесса, но последнее сравнение не работает.

msg 1 используется для рисования панели, а msg 2 - для построения панели обработки.

и цикл загрузки также не работает.

У кого-нибудь есть идеи?

ниже приведены мои данные, которые я создаю

msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0

1 Ответ

0 голосов
/ 27 декабря 2018

У вас есть эта инструкция:

mov cx, control

Во-первых, вы определили элемент управления как:

control db 0

Итак, вы выделили байт для control, и все жеВы загружаете это как слово.Это доставит вам неприятности в вашей петле.Вам нужно либо определить control как слово, либо сделать что-то вроде:

mov cx,0
mov cl,control

У вас та же проблема с окончательным сравнением:

cmp cx,control

control простобайт, но вы сравниваете целое слово.Какой бы байт не следует за control в памяти, он повлияет на результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...