怎样写一个简单的操作系统(6)
时间:2026-01-15
时间:2026-01-15
怎样写一个简单的操作系统
我们看看这些指令的更多一些细节,思考如下的汇编代码片断:
mov bx, 1000h
mov ax, [bx]
cmp ax, 50
jge label
...
label:
mov ax, 10
我们来看看这几条指令,第一条指令,把1000h传送到寄存器bx中。然后,
第二条指令是把bx寄存器指向的内存单元的数据传送到ax寄存器中,如果我们仅仅使用mov ax, bx,那么它的意思就是简单的把数据1000h传送到ax寄存器中,但是在bx上使用了方括号之后,意义就变化了,不是简单的把数据从bx传送到ax了,而是传送bx所指向的内存的内容到ax寄存器中。具体到这条指令,bx中是1000h,那么它的意思就是说把内存地址1000h中的数据传送到ax寄存器中。
因此,如果内存地址1000h中存放的数据是37,那么执行完上面的第二条指令之后,ax中存放的数据将是37,接下来,将是使用cmp指令对ax中的数据和50(十进制数50,注意,并没有h后缀)进行比较,之后的jge指令将作用在cmp的比较结果上,因为cmp指令执行之后,会设置标志寄存器的某些标志位,指令jge label的意思就是说,如果之前的比较结果是大于或者等于则跳转到label标签的位置继续执行,因此,如果ax寄存器中的数据不比50小的话,程序就跳转到label标签处执行,否则,程序继续执行“…”部分的代码。
最后一点:您可以使用db(字节定义)标识将数据插入到程序中。与数据库程序中插入数据(定义字节)指令。例如,定义一个字符串,可以使用一段以0结尾的连续字节来表示。如下所示: