Results 1 to 2 of 2

Thread: Executing segment codes from MASM with JMP

  1. #1

    Executing segment codes from MASM with JMP

    Hi

    I am attempting to debug a 16 bit bootloader in Bochs, however when running the code i am met with the following errors:

    For code:

    jmp far PTR 0:61Dh


    jmp far ptr 2000h:0


    jb short near ptr 106h
    The first two are producing error A2206: missing operator in expression

    and the third, error A2028: expression must be a code address.

    If anyone could advise as to how to make these functions work in MASM I would appreciate it.

    Thanks




    Complete asm file
    ; Format : Binary file
    ; Base Address: 0000h Range: 0000h - 0098h Loaded length: 0098h

    .686p
    .mmx
    .model flat

    ; ===========================================================================

    ; Segment type: Pure code
    seg000 segment byte public 'CODE' use16
    assume cs:seg000
    assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
    cli
    xor ax, ax
    mov ss, ax
    mov sp, 7C00h
    mov si, sp
    push ax
    pop es
    push ax
    pop ds
    sti
    cld
    mov di, 600h
    mov cx, 100h
    rep movsw
    jmp far ptr 0:61Dh
    ; ---------------------------------------------------------------------------
    mov dh, 0
    mov cx, 2
    mov di, 5

    loc_25: ; CODE XREF: seg000:0036j
    mov bx, 700h
    mov ax, 201h
    push di
    int 13h ; DISK - READ SECTORS INTO MEMORY
    ; AL = number of sectors to read, CH = track, CL = sector
    ; DH = head, DL = drive, ES:BX -> buffer to fill
    ; Return: CF set on error, AH = status, AL = number of sectors read
    pop di
    jnb short loc_3D
    xor ax, ax
    int 13h ; DISK - RESET DISK SYSTEM
    ; DL = drive (if bit 7 is set both hard disks and floppy disks reset)
    dec di
    jnz short loc_25
    mov si, 68Ah
    jmp short loc_78
    ; ---------------------------------------------------------------------------

    loc_3D: ; CODE XREF: seg000:002Fj
    mov cx, 3

    loc_40: ; DATA XREF: seg000:0083r
    mov di, 5

    loc_43: ; CODE XREF: seg000:0059j
    mov bx, 2000h
    push bx
    pop es
    assume es:nothing
    mov bx, 0
    mov ax, 220h ; DATA XREF: seg000:002Cr seg000:0033r ...
    push di
    int 13h ; DISK - READ SECTORS INTO MEMORY
    ; AL = number of sectors to read, CH = track, CL = sector
    ; DH = head, DL = drive, ES:BX -> buffer to fill
    ; Return: CF set on error, AH = status, AL = number of sectors read
    pop di
    jnb short loc_60
    xor ax, ax
    int 13h ; DISK - RESET DISK SYSTEM
    ; DL = drive (if bit 7 is set both hard disks and floppy disks reset)
    dec di
    jnz short loc_43
    mov si, 68Ah
    jmp short loc_78
    ; ---------------------------------------------------------------------------

    loc_60: ; CODE XREF: seg000:0052j
    mov cx, 3FFFh
    mov si, 800h
    xor di, di

    loc_68: ; CODE XREF: seg000:0071j
    lodsw
    and si, 0FFBFh
    xor ax, es:[di]
    stosw
    dec cx
    jnz short loc_68
    jmp far ptr 2000h:0
    ; ---------------------------------------------------------------------------

    loc_78: ; CODE XREF: seg000:003Bj seg000:005Ej ...
    lodsb
    cmp al, 0
    jz short loc_88
    push si
    mov bx, 7
    mov ah, 0Eh
    int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
    ; AL = character, BH = display page (alpha modes)
    ; BL = foreground color (graphics modes)
    pop si
    jmp short loc_78
    ; ---------------------------------------------------------------------------

    loc_88: ; CODE XREF: seg000:007Bj
    ; seg000:loc_88j
    jmp short loc_88
    ; ---------------------------------------------------------------------------
    inc sp
    imul si, [bp+di+6Bh], 4920h
    das
    dec di
    and [di+72h], al
    jb short near ptr 106h
    ; ---------------------------------------------------------------------------
    db 72h ; r
    seg000 ends


    end
    I promise that I have read the FAQ and tried to use the Search to answer my question.

  2. #2
    retf.

Similar Threads

  1. access memory via segment:[offset]
    By Smith Goga in forum OllyDbg Support Forums
    Replies: 2
    Last Post: February 17th, 2006, 02:41
  2. MASM Syntax.
    By Innocent in forum The Newbie Forum
    Replies: 3
    Last Post: September 27th, 2004, 11:16
  3. MASM and MSVBVM60 imports
    By Fahr in forum Off Topic
    Replies: 25
    Last Post: April 29th, 2004, 13:46
  4. MASM and dword ptr
    By johndoe1 in forum The Newbie Forum
    Replies: 2
    Last Post: March 7th, 2004, 10:33
  5. How does Ollydbg calculate 32bit values of segment
    By 1bitshort in forum OllyDbg Support Forums
    Replies: 1
    Last Post: January 6th, 2004, 02:28

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •