<自己动手写操作系统>2011040101
【分析】
部分代码:
LABEL_SEARCH_IN_ROOT_DIR_BEGIN:
cmp word [wRootDirSizeForLoop], 0 ; ┓
jz LABEL_NO_LOADERBIN ; ┣ 判断根目录区是不是已经读完,如果读完表示没有找到 LOADER.BIN跳转到LABEL_NO_LOADERBIN
dec word [wRootDirSizeForLoop] ; ┛
学习指令:
CMP
功能: 比较OP1与OP2的值
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
JMP
功能: 跳往指定地址执行
语法: JMP 地址
JXX
功能: 当特定条件成立则跳往指定地址执行
语法: JXX 地址
注:
A: ABOVE,当C=0,Z=0时成立
B: BELOW,当C=1时成立
C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
E: EQUAL,当Z=1时成立
G: GREATER(大于),当Z=0且S=0时成立
L: LESS(小于),当S不为零时成立
N: NOT(相反条件),需和其它符号配合使用
O: OVERFLOW,O=1时成立
P: PARITY,P=1时成立
PE: PARITY EVEN,P=1时成立
PO: PARITY ODD,P=0时成立
S: SIGN,S=1时成立
Z: ZERO,Z=1时成立
INC,DEC
功能: 把OP的值加一或减一
语法: INC OP DEC OP
格式: INC r/m DEC r/m
影响标志: P,A,Z,S,O
在此份代码中,采用nasm编译,在debug中,需要看到JZ对应Zero位{NZ表示Z=0,ZR标志Z=1}
在本地测试情况,显示执行cmp word [wRootDirSizeForLoop], 0后出现ZR标志,意味着没有找到Loader.bin文件,直接跳转LABEL_NO_LOADERBIN到显示信息的代码去了
如果Z=0呢?
执行dec word [wRootDirSizeForLoop],表示此字数据减一操作,从而影响标志位Z。
后面的代码模拟不好测试,现在只能自个阅读和分析下面的处理。
今天的学习到此Over了
部分代码:
LABEL_SEARCH_IN_ROOT_DIR_BEGIN:
cmp word [wRootDirSizeForLoop], 0 ; ┓
jz LABEL_NO_LOADERBIN ; ┣ 判断根目录区是不是已经读完,如果读完表示没有找到 LOADER.BIN跳转到LABEL_NO_LOADERBIN
dec word [wRootDirSizeForLoop] ; ┛
学习指令:
CMP
功能: 比较OP1与OP2的值
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
JMP
功能: 跳往指定地址执行
语法: JMP 地址
JXX
功能: 当特定条件成立则跳往指定地址执行
语法: JXX 地址
注:
A: ABOVE,当C=0,Z=0时成立
B: BELOW,当C=1时成立
C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
E: EQUAL,当Z=1时成立
G: GREATER(大于),当Z=0且S=0时成立
L: LESS(小于),当S不为零时成立
N: NOT(相反条件),需和其它符号配合使用
O: OVERFLOW,O=1时成立
P: PARITY,P=1时成立
PE: PARITY EVEN,P=1时成立
PO: PARITY ODD,P=0时成立
S: SIGN,S=1时成立
Z: ZERO,Z=1时成立
INC,DEC
功能: 把OP的值加一或减一
语法: INC OP DEC OP
格式: INC r/m DEC r/m
影响标志: P,A,Z,S,O
在此份代码中,采用nasm编译,在debug中,需要看到JZ对应Zero位{NZ表示Z=0,ZR标志Z=1}
在本地测试情况,显示执行cmp word [wRootDirSizeForLoop], 0后出现ZR标志,意味着没有找到Loader.bin文件,直接跳转LABEL_NO_LOADERBIN到显示信息的代码去了
如果Z=0呢?
执行dec word [wRootDirSizeForLoop],表示此字数据减一操作,从而影响标志位Z。
后面的代码模拟不好测试,现在只能自个阅读和分析下面的处理。
今天的学习到此Over了
无论生活、还是技术,一切都不断的学习和更新~~~努力~