Question

I am trying to assembly this code, but it returns an error. Could you please help me to fix it? Thanks.

INCLUDE irvine16.inc
.data
    array db 31h,32h,33h,34h    ;use db to define array
    COUNT = ($-array)       ;The $ operator gives the value of the location counter.
.code
main proc
    mov ax, @data       ;copy the address of the data segment  
    mov ds, ax      ;@data into the DS register
    mov bx, offset array    ;the offset operator returns the 16-bit offset of a label
    mov cx, COUNT   ;set up cx register as a counter register.  
    mov ah, 02      ;use function 2 of int 21h - display char stored in dl on screen
LP1: mov    dl, [bx]        ;LP1 is a label
    int 21h
    inc bx
    loop    LP1     ;decrement cx;  if cx not =0,loop back to label LP1.  
    mov ax, 4c00h
    int 21h
main endp
end main

No correct solution

OTHER TIPS

DGROUP is a 16-bits concept, so the remark in pmod's link (it is 16-bit code, DGROUP is a 16-bit concept, make sure you use the 16-bit linker) is true.

If that doesn't resolve it, play with your memory model (.model), Dos is 16 years ago for me, but IIRC some segments only existed in some memory models.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top