汇编 | CPU提供的栈机制
CPU提供的栈机制:push 寄存器/段寄存器/内存单元:将寄存器/段寄存器/内存单元中的数据压入栈中 pop 寄存器/段寄存器/内存单元:从栈顶取出的数据送入寄存器/段寄存器/内存单元中push和pop实质上是一种内存传送指令。8086CPU的push和pop都是以字为单位进行。栈顶的段地址存放在SS中,偏移地址存放在SP中。SS:SP指向栈中的第一个元素。**注:栈顶在上面,低位在上面。在80
CPU提供的栈机制:push 寄存器/段寄存器/内存单元:将寄存器/段寄存器/内存单元中的数据压入栈中 pop 寄存器/段寄存器/内存单元:从栈顶取出的数据送入寄存器/段寄存器/内存单元中push和pop实质上是一种内存传送指令。8086CPU的push和pop都是以字为单位进行。栈顶的段地址存放在SS中,偏移地址存放在SP中。SS:SP指向栈中的第一个元素。**注:栈顶在上面,低位在上面。在80
8086CPU内存中字的存储:CPU中,用16位寄存器来存储一个字,高8位存放高位字节,低8位存放低位字节。在内存中存储时,由于内存单元是字节单元,一个字要用两个地址连续的内存单元来存放。字的低位字节存在低位地址单元中,字的高位字节存在高位地址单元。起始地址(低位)为N,则为N地址字单元。CPU中DS寄存器通常用来存放要访问数据的段地址。 如下几种形式:mov 寄存器,数据 mov 寄存器,寄存器
编译运行过程编程 :asm编译:obj连接:exe加载内存中的程序运行DS寄存器是存的是程序段地址,IP是程序偏移地址,DS:IP是程序起点,程序前面先创建PSP(256字节)(程序段前缀)的数据区,DOS利用PSP和加载的程序进行通信,256字节后为程序区。CS:IP是程序入口,存在程序区。 inc bx是bx中的内容加1 注意点:在cx中存放循环的次数loop指令中的标号所标识地址要在前面要循
assume 寄存器:段名 ;将寄存器和代码段联系一起 段名 segment ;一个段的开始 ... ... 段名 ends ;一个段的结束 mov ax,4c00H ;程序返回 int 21H end
执行DosBox将debug.exe的物理路径D:/DosBox-0.47定义为DosBox的C盘mount C D:/DosBox-0.74(bedug.exe的存放路径)访问C盘C:运行debug文件debug命令参数-R查看、改变所有寄存器内容,注意:CS:IP(073F:0100)处存放的机器码是0000,对应的汇编指令是ADD [BX+SI],AL -R AX(改变AX寄存器的值,直接在