16位汇编基础知识
2022-04-06 本文已影响0人
温柔倾怀
基础知识
C语言程序中,程序的执行从main函数开始。main函数作为程序的入口点,在VS项目的属性中可以更改函数的入口点。
在汇编语言中,没有特殊指定的情况下,从代码段的0开始执行,代码段寄存器CS。
16进制的操作数如果以字母开头,则要在前面加一个0,如果是数字开头,则无所谓。
IDT中断描述符表
int 1 1号中断
int 2
基本框架
声明代码段assume cs : code
code 为代码段的名字,自定义。
assume cs:code
code segment ;代码段开始
mov ax,4cooH
int 21H
code ends ;代码段结束
end ;汇编语言结尾
debug调试
r 查看当前寄存器状态
p 单步步过
t 单步步入
u 查看汇编代码
d 显示内存
g 一直向下运行
在汇编中使用函数
汇编中也是可以使用函数的。
函数要写在代码段中,所有的指令都要写在代码段里。
系统函数的返回结果通常放在ax寄存器,将想要返回的值mov到ax中。
;函数定义
func proc
ret
func endp
call func ;函数调用
- 若在asm文件中使用了函数,需要手动指定程序执行的入口地址,否则是从第一条指令开始顺序执行。
- 指定入口地址
start:
- 则asm文件中结尾的end要改为
end start
包含mian函数的汇编框架
注意
-
第一条指令的地址在其段中为0
常用指令
add
两数相加,结果放在第一个操作数中,不允许两个内存做加法
inc
自增 inc ax
sub
操作数1减去操作数2,结果放到操作数1中
dec
自减
loop
循环,使用cx计数器寄存器,记录循环的次数