A debugger is a program that can examine the state of your program while your program is running. The technical means it uses for doing this are not necessary for understanding the basics of using a debugger. You can use a debugger to halt the execution of your program when it reaches a particular place in your code, and then examine the values of the variables in the program. You can use a debugger to run your program very slowly, one line of code at a time (called single stepping), while you examine the values of its variables.
2014-08-19 answer (excerpt) by Raedwald
I consider this code "a small masterpiece of 8086 assembler programming", unlike LZEXE's online depacker which buffers the entire depacked data. This code enables streaming decompression with a buffer exactly the size of the match window, for arbitrarily large streams of data.
This is found in the code that depacks the debugger's extpak compressed Extension for lDebug library, which is included in the extpak.eld and list.eld files. The buffer size must be as small as possible to reduce the memory needed by the ELDs. Buffering the entire depacked data is not possible because that exceeds 100 KiB.
2026-03-22
Comments on label delta arithmetic
Today I posted a stackoverflow question and answer on how to do arbitrary calculations on assembly language labels, How can I do arbitrary calculations on assembly language labels?. As a companion to that question, here is a collection of comments in which I have referred to label delta arithmetic before.
→ Read more...