{"resolved":true,"match_type":"uuid","source_type":"original_book","book_id":"38270854-596f-4a26-8183-db8c968c6020","title":"编码 隐匿在计算机软硬件背后的语言","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787121181184","requested_by":"printed_page","book":{"source_type":"original_book","book_id":"38270854-596f-4a26-8183-db8c968c6020","id":"38270854-596f-4a26-8183-db8c968c6020","uuid":"38270854-596f-4a26-8183-db8c968c6020","title":"编码 隐匿在计算机软硬件背后的语言","normalized_title":"编码隐匿在计算机软硬件背后的语言","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787121181184","isbns":["9787121181184","0123456789","6044921875","3039331000","0000000000","0000000000000"],"parsed":true,"ai_readable":true,"document_type":"book","page_count":438,"navigation_url":"https://workshop.closeclaw.top/ai/book/38270854-596f-4a26-8183-db8c968c6020","title_url":"https://workshop.closeclaw.top/ai/title/%E7%BC%96%E7%A0%81%20%E9%9A%90%E5%8C%BF%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%BD%AF%E7%A1%AC%E4%BB%B6%E8%83%8C%E5%90%8E%E7%9A%84%E8%AF%AD%E8%A8%80","fixed_page_url_template":"https://workshop.closeclaw.top/ai/book/38270854-596f-4a26-8183-db8c968c6020/page/{printed_page}","path_api_url_template":"https://workshop.closeclaw.top/api/ai/book/38270854-596f-4a26-8183-db8c968c6020/page/{printed_page}","read_url":"https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020","page_url":"https://workshop.closeclaw.top/api/ai/books/38270854-596f-4a26-8183-db8c968c6020/page","search_url":"https://workshop.closeclaw.top/api/ai/books/38270854-596f-4a26-8183-db8c968c6020/search"},"page":{"printed_page":294,"pdf_page":310,"physical_index":310,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"37b58899195f4e5a2cad64eb187e7ea5af2747c661cb06ff9ed8119f4f717b5d"},"chapter":"编码隐匿在计算机软硬件背后的语言","content":"寄存器B中的内容被保存到堆栈指针指向的地址，即存储器地址7FFFh处。\n\n堆栈指针减1，变为7FFEh。\n\n寄存器C中的内容被保存到堆栈指针指向的地址，即存储器地址7FFEh处。\n\n类似的，在堆栈指针仍为7FFEh的情况下，执行POP BC指令时会将上面的步骤反过来执行一遍：\n\n堆栈指针指向的地址（7FFEh）的内容加载到累加器C。\n\n堆栈指针加1，变为7FFFh。\n\n堆栈指针指向的地址（7FFFh）的内容加载到累加器B。\n\n堆栈指针加1，变为8000h。\n\n每执行一条PUSH指令，堆栈都会增加两个字节，这可能会导致程序出现一些小错误一堆栈可能会不断增大，最终覆盖掉存储器中保存的程序所必需的代码或数据。这种错误被称作堆栈上溢（stack overflow）。类似的，如果在程序中过多地使用了POP指令，则会过早地取完堆栈中的数据从而导致类似的错误，这种情况称为堆栈下溢（stackunderflow)。\n\n如果8080连接的是一个64KB的存储器，你可能会把堆栈指针初始化为0000h。当执行第一条 PUSH指令时，堆栈指针会减1变为 FFFFh，即存储器的最后一个的存储单元。这时，堆栈的初始位置将会是存储器的最高地址，因为程序的代码通常从0000h开始存放，因此两者将保持非常远的距离。\n\n8080 使用LXI指令为堆栈寄存器赋值，LXI是Load Extended Immediate的缩写，即加载扩展的立即数。下面的这些指令将把操作码后的两个字节保存到16位寄存器对中。\n\n指令：\n\nLXI BC, 527Ah\n\n编码隐匿在计算机软硬件背后的语言\n\n294","previous_page":293,"next_page":295}