{"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":244,"pdf_page":260,"physical_index":260,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"9578fd744f514532c638c8499727716702bbe0ca8fb66936c32a44241641135a"},"chapter":"编码隐匿在计算机软硬件背后的语言","content":"第一次循环之后，位于地址0004h和0005h处的16位数等于A7h与1的乘积，这和我们的设计相符。在上图中，地址1003h处的字节通过Load指令载入到累加器，该字节是1Ch。把这个数和001Eh地址的字节相加后，恰好遇到的是Halt指令，当然这是一个合法的数。FFh与1Ch相加的结果与从1Ch中减去1的结果相同，都是1Bh，因为这个数不等于0，所以零标志位是0，1Bh这个结果会存回到1003h地址。下一条要执行的指令是JumpIf Not Zero，零标志位没有置为1，因此发生跳转。接下来要执行的一条指令位于0000h地址。\n\n需要记住的是，Store指令不会影响零标志位的值。只有 Add、Subtract、Add with Carry、Subtract with Borrow 这些指令才能影响零标志位的值，因此它的值与最近执行上述某个指令时所设置的值相同。\n\n经过两次循环后，1004h和1005h地址所保存的16位数等于A7h与2的乘积。1Bh与FFh的和等于1Ah，不为0，因此仍然返回到顶部执行。\n\n当执行到第28次循环时，1004h和1005h地址保存的16 位数等于A7h和1Ch的乘积。1003h地址保存的值是1，它和FFh相加的结果是0，因此零标志位被置位！JumpIfNot Zero 指令不会再跳转到 0000h 地址，相反，下一条要执行的指令即 Halt 指令。这样，我们就完成了全部的工作。\n\n现在可以断言，我们一直不断完善的这组硬件构成的机器确实可以被称为计算机(computer)。当然，它还很原始，但毕竟是一台真正的计算机。条件跳转指令将它与我们以往设计的加法器区别开来，能否控制重复操作或者循环(looping)是计算机(computer)和计算器(calculator)的区别。这里演示了该机器如何用条件跳转实现两个数的乘法运算，用类似的方法还可以进行两个数的除法运算。而且，这不仅仅局限于8位数，它可以对16位、24位、32位，甚至更高位的数进行加、减、乘、除运算。而且，既然它能完成这些运算，那么对于开平方根、取对数、三角函数等运算也完全可以胜任。\n\n既然我们已经装配了一台计算机，因此可以使用计算机相关词汇了。\n\n我们装配的计算机属于数字计算机（digital computer)，因为它只处理离散数据。曾经还有一种模拟信号计算机（analog computer)，但现在已经非常少见了。(数字数据就是离散数据，即这些数据是一些确定的离散值；模拟数据是连续的，并且在整个取值区间\n\n编码隐匿在计算机软硬件背后的语言\n\n244","previous_page":243,"next_page":245}