Ошибка Dosbox L2002: исправление переполнения на 5 в сегментном коде - PullRequest
0 голосов
/ 16 апреля 2020

Я учусь связывать модули в сборке 8086. У меня есть 2 файла.test.asm и utils.asm. Сначала я компилирую их с masm utils и masm test, затем я пытаюсь связать тест с утилитами с помощью link test utils, однако, я получаю эту ошибку enter image description here

test.asm code

.386
extrn wrhax:near

code segment use16
    mov ax,5
    call wrhax
    mov ah,4CH
    int 21H
code ends
end

utils.asm code (функция wrhax предназначена для отображения значения в AX)

.386
.model small
public wrhax

assume cs:code
stack segment use16 stack
    db 100 dup(0)
stack ends

code segment use16

disp_ch     proc
        push dx
        push ax
        mov  ah,02h
        mov  dl,al
        int  21h
        pop  ax
        pop  dx
        ret
disp_ch     endp

wrhax proc
        push    ax 
        push    dx 
        mov dx,ax 
        mov ch, 4 
L1: 
        mov cl, 4 
        rol dx, cl 
        mov al,dl 
        and al,0FH 
        add al,30h 
        cmp al,3ah 
        jl printit 
        add al,7h 
printit: 
        call  disp_ch 
        dec ch 
        jnz L1
        pop dx 
        pop ax 
        ret 4
wrhax endp
code ends
end

Окружающая среда: dosbox windows 10

...