摘要:
初学Delphi嵌入汇编是万一老师写的一个学习Delphi+ASM的系列
// Delphi函数中,使用eax,edx,ecx分别表示前三个参数 // 32位返回值直接由eax返回
function add(x,y: Integer): Integer;
asm
ADD EAX,EDX
end; 阅读全文
摘要:
这几天一直在学习王爽的那本汇编语言 阅读全文
摘要:
1. flag寄存器是按位起作用的,每一位都有专门的含义
2. 其实cpu是执行add等指令时,就已经包含了两种含义(有符号数和无符号数,关键是我们需要不需要SF、CF、OF等
标志)。CF记录无符号,OF记录有符号,SF记录结果的符号
3. 补码运算时,先看两个操作数的最高位是不是1,然后算出相应的十进制
4. 8086CPU用称为中断类型码的数据来表示中断信息的来源,中断类型码为一个字节的数据可以表示256种中断
中断向量就是中断处理程序的入口地址
5. 8086CPU在收到中断信息后,引发中断的过程:1.从终端信息中取得中断类型码;2.标志寄存器入栈;TF和IF置0 阅读全文
摘要:
1. 一个字由两个字节组成,可以存在一个16寄存器中,这个字的高位字节和低位字节分别存在这个寄存器的高8位 寄存器和低8位寄存器中。
2. 一个内存单元可以存放8位数据,cpu中的寄存器又可以存放N个8位的数据,所以计算机中的数据大多是由1到N 个8位.
3. 数据构成的,用16禁止可以直观的看出这些数据由哪些8位数据组成。
4. 8位寄存器最大可以存放值为255的数据,16位寄存器最大可以存放值为65535的数据。
5. 每一个内存单元在存储空间中都有一个唯一的地址,这个地址称为物理地址。 阅读全文
摘要:
32位CPU所含有的寄存器有:
4个数据寄存器(EAX、EBX、ECX和EDX)
2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)
1、数据寄存器 阅读全文
摘要:
指令长度与寻址方式有关系,规律或原则如下:
一、没有操作数的指令,指令长度为1字节。如
es:
ds:
cbw
xlat
等。
二、操作数只涉及寄存器的指令,指令长度为2字节。如
mov al,[si]
mov ax,[bx+si]
mov ds,ax 阅读全文
摘要:
-----------------------算数运算指令-----------------------
ADD 加法
ADC 带位加法
SBB 带位减法
SUB 减法.
INC 加法.
NEC 求反(以0减之).
NEG 求反然后加1,假如NEG AL相当于Not AL; INC AL
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
INC DPTR 数据指针寄存器值加1 (说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字
节(DPH)加1,不影响任何标志位) 阅读全文
摘要:
中断INT 21H :
1、字符功能调用类(Character-Oriented Function)
01H、07H和08H —从标准输入设备输入字符
02H —字符输出
03H —辅助设备的输入
04H —辅助设备的输出
05H —打印输出
06H —控制台输入/输出
09H —显示字符串
0AH — 键盘缓冲输入
0BH —检测输入状态
0CH —清输入缓冲区的输入功能
(1)、功能01H、07H和08H
功能描述:从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾
入口参数:AH=01H,过滤掉控制字符,并回显 阅读全文