{"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":242,"pdf_page":258,"physical_index":258,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"523c5e5fa53b6ba117bd1a1fa59bf85fc4eddb1be2ccc3d6ff56cde5afcc62b6"},"chapter":"编码隐匿在计算机软硬件背后的语言","content":"但如果在地址 0012h 处放置一条 Jump指令会怎样呢？这个指令使得计数器再次从0000h处开始计数。\n\n$$\n0 . 0 1 1 2 \\mathrm { h } : \\left[ \\begin{array} { c } { \\mathrm { 3 ( ) h } } \\\\ { \\mathrm { o { ( 0 ) h } } } \\\\ { \\mathrm { o { ( h ) } } } \\\\ { \\mathrm { o { ( 0 h ) } } } \\end{array} \\right] ^ { \\sharp \\sharp } \\overline { { \\mathfrak { H } } } ^ { \\sharp } \\overline { { \\mathfrak { H } } } ^ { \\sharp } \\overline { { \\mathfrak { H } } } ^ { \\sharp } \\overline { { \\mathfrak { H } } } 0 . 0 0 0 \\mathrm { h } \\dot { \\mathfrak { L } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overset { \\cdot } { \\mathfrak { H } } \\overline { { \\mathfrak { H } } } \\overset { \\cdot } { \\mathfrak { H } } \\overline { { \\mathfrak { H } } } \\overset { \\cdot } { \\mathfrak { H } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } : \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak { H } } } \\overline { { \\mathfrak \\mathfrak { H } } } \\overline { { \\mathfrak \\mathfrak { H } } } \\overline  { \\mathfrak \\mathfrak { H } } \\overline { \\mathfrak { H } \\mathfrak }\n$$\n\n这的确是一个巧妙的方法。第一次执行完指令之后，位于存储器的1004h和1005h地址的16位数等于A7h乘1，然后Jump指令使下一条指令从存储器顶部开始执行。第二次执行指令后，该16位数等于A7h乘2，最后其结果可以等于A7h乘1Ch。但是，这个过程不会停止下来，它会一直反复执行下去。\n\n我们需要的是这样一种Jump指令，它只让这个过程重复执行所需要的次数，这种指令就是条件跳转指令，它并不难实现。要实现它，要做的第一步是增加一个与进位锁存器类似的1位锁存器。该锁存器被称为零锁存器（Zerolatch)，这是因为只有当8位加法器的输出全部为0时，它锁存的值才是1。\n\n使或非门的输出为1的唯一方法是其所有的输入全为 $\\scriptstyle \\mathbf { 0 } _ { \\circ }$ 与进位锁存器的时钟输入一样，只有当 Add、Subtract、Add with Carry、Subtract with Borrow 这些指令执行时，零锁存器才锁存1个数，该数称做零标志位（Zero flag）。注意，它是以一种似乎是相反的方式工作的：当加法器的输出全为0时，零标志位等于1；当加法器的输出不全为0时，零标志位等于0。\n\n有了进位锁存器和零锁存器以后，我们可以为指令表新增4条指令。\n\n编码——隐匿在计算机软硬件背后的语言\n\n242","previous_page":241,"next_page":243}