16位汇编基础知识

基础知识

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计数器寄存器,记录循环的次数

你可能感兴趣的:(16位汇编基础知识)