But it just prints an empty string, unless I set the address to something like 0x00 or 0x20, then it prints some ascii characters . Also I am new to assembly and x86 segmentation so I barely know if I am doing things right .
INT 10H 1300H: Display String
 Expects: AX    1300H
          BH    video page
          BL    video attribute
          CX    length of string
          DH,DL row,column to start writing
          ES:BP address of start of text to write
          ──────────────────────────────────────────────────────────────────
 Returns: (none)
So far my code is:
            // Stack Segment
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.AL, offset),
            new MovInstruction_Segment16Bit_RegisterImmediate16Bit(Register8086.DL, Register8086.AL),
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.AH, 0x00),
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.CH, size),
            // Extra Segment
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.BL, offset),
            new MovInstruction_Segment16Bit_RegisterImmediate16Bit(Register8086.AL, Register8086.BL),
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.BH, 0x00),
            // Main
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.AL, 0x1300),
            new MovInstruction_Register8Bit_Immediate8Bit(Register8086.BH, videoPage),
            new MovInstruction_Register8Bit_Immediate8Bit(Register8086.BL, videoAttribute),
            new MovInstruction_Register16Bit_Immediate16Bit(Register8086.CL, lengthOfString),
            new MovInstruction_Register8Bit_Immediate8Bit(Register8086.DH, row),
            new MovInstruction_Register8Bit_Immediate8Bit(Register8086.DL, column),
            //new MovInstruction_Register16Bit_Immediate16Bit(Register8086.CH, size),
            //new MovInstruction_Register16Bit_Immediate16Bit(Register8086.AH, offset),
            //new MovInstruction_Segment16Bit_RegisterImmediate16Bit(Register8086.AL, Register8086.AH),
And my disassembly is:
// Stack Segment
0x0000000000000000:  B8 00 7C    mov ax, 0x7c00
0x0000000000000003:  8E D0       mov ss, ax
0x0000000000000005:  BC 00 00    mov sp, 0
0x0000000000000008:  BD 01 00    mov bp, 1
// Extra Segment
0x000000000000000b:  BB 00 7C    mov bx, 0x7c00
0x000000000000000e:  8E C3       mov es, bx
0x0000000000000010:  BF 00 00    mov di, 0
// Main
0x0000000000000013:  B8 00 13    mov ax, 0x1300
0x0000000000000016:  B7 00       mov bh, 0
0x0000000000000018:  B3 4D       mov bl, 0x4d
0x000000000000001a:  B9 00 02    mov cx, 0x200
0x000000000000001d:  B6 00       mov dh, 0
0x000000000000001f:  B2 00       mov dl, 0
//0x0000000000000021:  BD 01 00    mov bp, 1
//0x0000000000000024:  BC 00 7C    mov sp, 0x7c00
//0x0000000000000027:  8E C4       mov es, sp
0x0000000000000029:  CD 10       int 0x10
