2021/01/24汇编语言——三、C与汇编语言
80x86汇编与C语言-1
数据类型
C声明 | Intel数据类型 | 汇编代码后缀 | 大小(字节) |
---|---|---|---|
char | 字节 | b | 1 |
short | 字 | w | 2 |
int | 双字 | l | 4 |
long int | 双字 | l | 4 |
long long int | — | — | 4 |
char* | 双字 | l | 4 |
float | 单精度 | s | 4 |
double | 双精度 | l | 8 |
long double | 扩展精度 | t | 10/12 |
在X86-32中,使用“字(word)”来表示16位整数类型,“双字”表示32位。
汇编语言指令所处理的数据类型一般是采用汇编指令的后缀来进行区分的。
指令 | 效果 | 描述 |
---|---|---|
MOV S,D | D <- S | 传送 |
movb | 传送字节 | |
movw | 传送字 | |
movl | 传送双字 | |
MOVS S,D | D <- 符号扩展 (S) | 传送符号扩展的字节 |
movsbw | 将做了符号扩展字节传送字 | |
movsbl | 将做了符号扩展的字节传送到双字 | |
movswl | 将做了符号扩展的字传送到双字 | |
MOVZ S,D | D <- 零扩展 (S) | 传送零扩展的字节 |
movzbw | 将做了零扩展字节传送字 | |
movzbl | 将做了零扩展的字节传送到双字 | |
movzwl | 将做了零扩展的字传送到双字 | |
pushl S | 将双字压栈 | |
popl D | 将双字出栈 |