Messages in this thread | | | Date | Wed, 23 Apr 2003 13:05:31 -0700 | From | "Randy.Dunlap" <> | Subject | Re: Searching for string problems |
| |
On Wed, 23 Apr 2003 22:48:35 +0300 Andrew Kirilenko <icedank@gmx.net> wrote:
| Hello! | | Big thanks to all of you. Now I'm starting to understand how it's working. | Here is current version of my code: | | --> | jmp cl_start | cl_id_str: .string "STRING" | cl_start: | cld | movw %cs, %ax | movw %ax, %ds | movw $0xe000, %ax | movw %ax, %es | movb $0, %al | xor %bx, %bx # start of segment | cl_compare: | movw $cl_id_str, %si | movw $cl_start, %cx | subw %si, %cx | decw %cx | movw %bx, %di | repz cmpsb | je cl_compare_done_good | incw %bx | cmpw $0xffff, %bx # are we at the end of segment | je cl_compare_done | jmp cl_compare | cl_compare_done_good: | movb $1, %al | cl_compare_done:
# here the code needs to do something like this, # to check the second 64 KB block of memory: movw %es, %bx cmpw %bx, $0xe000 je all_done movw $0xf000, %bx movw %bx, %es xor %bx, %bx jmp cl_compare
| <-- | | And this code won't work as well :(
Do you understand x86 real-mode segment registers? They can only address a "segment" of 64 KB (roughly).
| Unfortunately, I can't start DOS and check, cause there is no video and | keyboard controller on that PC.
oh yes.
-- ~Randy - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |