{"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":232,"pdf_page":248,"physical_index":248,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"b1e2462a0f0ff9a6cf24151f958ff899759bbc1c141f8915be257511a4a3431b"},"chapter":"编码隐匿在计算机软硬件背后的语言","content":"Add，Subtract，Add with Carry，Subtract with Borrow指令来说，该地址指明的存储单元所保存的是要从累加器中加上或减去的字节。对于Store指令来说，该地址指明的是累加器中的内容将要保存到的存储单元地址。\n\n例如，当前加法器所能进行的最简单的运算就是对两个数求和。为了执行这个操作，需要按下面的方式设置代码RAM阵列和数据RAM阵列。\n\n$$\n\\begin{array}{c} \\begin{array} { r l } { { 4 } \\overrightarrow { 1 } \\overrightarrow { 1 3 } } & { { } } \\\\ { 0 . 0 0 0 \\mathbf { h } \\colon [ \\begin{array} { l } { 1 0 \\mathbf { h } } \\\\ { 1 0 \\mathbf { h } } \\end{array} ] \\mathbf { L o a d } } & { { } } \\\\ { [ \\begin{array} { l } { 2 0 \\mathbf { h } } \\\\ { 2 0 \\mathbf { h } } \\end{array} ] \\mathbf { A d d } } & { { } } \\\\ { [ \\begin{array} { l } { 1 1 \\mathbf { h } } \\\\ { \\mathrm { F F h } } \\end{array} ] \\mathbf { S t o r e } } \\end{array}   & { { } } \\end{array} \\begin{array} { r l } { \\underbrace { \\frac { 4 \\mathbf { k } + \\mathbf { B } } { 2 \\mathbf { k } } } _ { \\begin{array} { l } { 0 . 0 0 0 \\mathbf { h } \\colon [ 4 \\mathbf { A } \\mathbf { h } ] } \\\\ { 0 . 5 \\mathbf { h } } \\end{array} } } \\\\ { [ \\begin{array} { l } { 1 0 \\mathbf { h } } \\\\ { \\mathrm { F r h } } \\end{array} ] \\mathbf { H } \\mathbf { a d t } } & { { } } \\end{array}\n$$\n\n在改进的自动加法器中，每条指令（除了Halt指令）需要3个字节。\n\n每一条指令的代码（除了Halt指令）后跟两个字节，用来指明数据RAM阵列中16位的存储地址。这三个地址恰巧是0000h，0001h和0002h，但它们可以是任何其他可用的地址。\n\n前面讲到了如何用 Add 或 Add with Carry 指令来对两个 16 位数—比如 76ABh 和232Ch求和。必须把两个数的低字节保存到存储器的0000h和0001h地址，把其高字节保存到0003h和0004h地址，运算的结果分别保存在0002h和0005h。\n\n通过这种变化，我们可以用一种更合理的方式来保存这两个操作数及其运算结果，\n\n编码—隐匿在计算机软硬件背后的语言\n\n232","previous_page":231,"next_page":233}