我最近开始学习计算机设计,遇到了这个问题。我的理解是处理器通过总线从内存接收数据和指令。在这种情况下,内存是一个字节(8 位)大小的单元序列,其中每个单元可以存储 0 到 255 之间的数字。但我并不完全清楚处理器命令如何准确地适应一个字节。请解释一下处理器的指令如何编码为一个字节?
acknalogia
Asked:
2020-09-14 23:22:58 +0000 UTC
我最近开始学习NASM,我坐在 Arch x86_64 下,NASM 版本 2.15.04。我最近发现了以下代码:
section .text
global _start
_start:
mov al,'3'
sub al, '0'
mov bl, '4'
sub bl, '0'
mul bl
add al, '0'
mov [res], al
mov ecx,msg
mov edx, len
mov ebx,1
mov eax,4
int 0x80
mov ecx,res
mov edx, 1
mov ebx,1
mov eax,4
int 0x80
mov eax,1
int 0x80
section .data
msg db "The result is:", 0xA,0xD
len equ $- msg
segment .bss
res resb 2
所以,如果你乘以使得输出数字小于 10(十进制),那么一切正常,如果数字更大,那么结果就是胡说八道。(在这个版本中 3*4 = 4f)
