DB指令是“data byte" 往文件写1个字节的指令,
resb 指令是”rserve byte“ 从现在的地址空出10个字节
dw和dd指令 分别是”data word“ 和”data double-word“world指16位,也就是2个字节,double-word是四个字节
org 指令是"origin" 它会告诉程序从指定的地址开,把程序转载的内存中的指定地址
jmp指令相当于c的goto 来源于英文的"jump"
"entry:"这是标签的声明, 用于只当jmp指令的跳转目的地,
mov ax,0 相当于 ax =0
AX-------accummulator, 累加寄存器
CX--------counter,计数寄存器
DX--------data,数据寄存器
BX---------base,基址寄存器
X表示extend 扩展的意思,因为在这之前CPU寄存器都是8位的
SP---------stack pointer,栈指针寄存器
BP----------base pointer,基址指针寄存器
ST----------source index, 源变址寄存器
DI----------destination index, 目的变址寄存器
以上寄存器是16位寄存器,是具有代表性的8个寄存器
另一面,CPU还有8个8位寄存器
AL-------累加寄存器低位(Accumulator low)
CL-------计数寄存器低位(Counter low)
DL-------数据寄存器低位(Data low)
BL--------基址寄存器低位(Base low)
AH--------累加寄存器高位(Accumulator high)
CH--------计数寄存器高位(Counter high)
DH--------数据寄存器高位(Data high)
BH---------基址寄存器高位(Base high)
名字解释:AX寄存器共有16位,其中0到7位的低8位叫AL,而8位到15位的高8位叫AH,
那为什么BP,SP,SI,DI没分位”L“和”H“呢,这几个寄存器不能分为”L“和”H“
如果无论如何分别取高位或低位数据,就必须先用”mov,AX,SI“将SI的值赋到AX中,然后再用AL,AH来取值,
而32寄存器就是EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
而还要一种寄存器叫段寄存器,这些寄存器都是16位寄存器
ES----附加段寄存器(Extra Segment)
CS----代码段寄存器(Code Segment)
SS-----栈段寄存器(Stack Segment)
DS-----数据段寄存器(Data Segment)
FS-----没用名称(Segment Part 2)
GS----_没用名称(Segment Part 3)
MOV BYTE [678],123 指令[] 代表一个内存地址
数据大小 [地址]
Add-----加法指令
Cmp -----比较指令
JE -------- 条件跳转指令
INT --------软件中断指令
显示一个字符:
AH=0x0e
AL=character code
BH=0
BL=color code
————————
HLT让CPU处于待机状态