{"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":383,"pdf_page":399,"physical_index":399,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"027b39681778efc8e0bb4374e4bebe8a4c500a9f632ff9fa03bc718b4c384930"},"chapter":"编码隐匿在计算机软硬件背后的语言","content":"MVI(Move Immediate）语句将数值 9 转移到寄存器 C。CALL 5 语句实现 CP/M 的函数调用功能。函数5的作用是：显示以寄存器对DE给出的地址为起始处的字符串，直到遇到\\$结束（可以看到，在程序的结尾处使用了美元符号“\\$”作为文本的结束标志，这种方式看起来很奇怪，但CP/M就是采取的这种方式)。最后的RET语句用来结束程序，并把控制权交还给CP/M（实际上，这只是结束CP/M程序的方法之一)。END语句用来指明汇编语言文件已经结束。\n\n现在我们已经有了一个包含7行语句的文本文件，下一步要做的就是对其进行汇编，即将其转换成机器语言代码。以前这项工作是通过手工完成的，但现在我们的机器运行的是CP/M系统，可以利用CP/M中一个叫做 ASM.COM的模块来完成这项工作。该模块是 CP/M的汇编器(assembler)。可以在 CP/M的命令行中使用下面的语句运行 ASM.COM文件：\n\nASM PROGRAM1.ASM\n\nASM 对 PROGRAM1.ASM 文件进行汇编，产生一个名为 PROGRAM1.COM的新文件，PROGRAM1.COM包含了与我们编写的汇编程序相对应的机器码（实际上，该过程还包含另一个步骤，但在该操作中并不重要)。现在就可以使用CP/M的命令行来运行PROGRAM1.COM文件，程序运行的结果是显示字符串“Hello!”然后结束。\n\nPROGRAM1.COM文件包含以下16个字节：\n\n$$\n\\begin{array} { r l r l r l r l r l r l r l r l r l } { { 1 } 1 } & { { } 0 9 } & { 0 1 } & { 0 \\mathrm { E } } & { 0 9 } & { { } \\mathrm { C D } } & { 0 5 } & { { } 0 0 } & { { } \\mathrm { C 9 } } & { 4 8 } & { { } 6 5 } & { { } 6 \\mathrm { C } } & { { } 6 \\mathrm { C } } & { { } 6 \\mathrm { F } } & { { } 2 1 } & { { } 2 4 } \\end{array}\n$$\n\n开始的3个字节是LXI指令，其后的两个字节是MVI指令，接下来的三个字节是CALL指令，紧随其后的一个字节是RET指令，最后的7个字节是ASCII码，包括5个字母“Hello”，感叹号“!”以及美元符号“\\$”。\n\n像ASM.COM这样的汇编器程序所做的工作是：读取一个汇编语言文件(source-code，通常称做源代码文件)，将其转换得到一个包含机器码的文件—可执行文件（executablefile)。从宏观的角度来看，汇编器是非常简单的，因为构成汇编语言的助记符和机器码之问是一-对应的。汇编器拥有-一张包括所有可能助记符及其参数的表，它逐行读取汇编语言程序，把每一行都分解成为助记符和参数，然后把这些短小的单词和字符与表中的内容匹配。通过这种匹配的过程，每一个语句都会找到与其对应的机器码指令。\n\n24 高级语言与低级语言\n\n383","previous_page":382,"next_page":384}