У меня есть эта программа внизу, и она рассчитывается до 100 с помощью DOSBox.Он отлично работает с .286, но я хочу знать, как я могу сделать эту работу с .386.
.286
.model small
setCurPos macro x,y
pusha
mov ah, 02h
mov bh, 0
mov dl, x
mov dh, y
int 10h
popa
endm
writeChar macro char,color,ctr
pusha
mov ah, 9
mov al, char
mov bh, 0
mov bl, color
mov cx, ctr
int 10h
popa
endm
delay macro
mov cx, 0fh
mov dx,4240h
mov ah,86h
int 15h
endm
.stack 100h
.data
percentage db 0
ones db ?
tens db ?
.code
org 100
main proc far
mov ax, @data
mov ds, ax
mov es, ax
mov ah, 0
mov al, 13h
mov bh, 0
int 10h
jmp count
to_printHundred:
jmp printHundred
count:
delay
cmp percentage, 64h
je to_printHundred
cmp percentage, 0ah
jae printTens
;printOnes
mov al, percentage
add al, 30h
mov ones, al
setCurPos 10, 10
writeChar ones, 0fh, 1
inc percentage
jmp count
printTens:
xor ax, ax
mov bx, 0ah
mov al, percentage
div bl
add al, 30h
add ah, 30h
mov tens, al
mov ones, ah
setCurPos 10,10
writeChar tens,0fh,1
setCurPos 11,10
writeChar ones,0fh,1
inc percentage
jmp count
printHundred:
mov tens, 31h
mov ones, 30h
setCurPos 10,10
writeChar tens,0fh,1
setCurPos 11,10
writeChar ones,0fh,2
mov ah, 4ch
int 21h
endp
end main
Он зависает и выводит нелегальное чтение / запись всякий раз, когда я использую задержку.все время передает условные переходы, когда программа действительно большая.