汇编语言笔记

汇编语言

寄存器

一个典型的cpu由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连。

cpu中:

  • 运算器进行信息处理
  • 寄存器进行信息储存
  • 控制总线控制各种器件进行工作
  • 内部总线连接各种器件,在他们之间进行数据的传送

一个内存单元可存放8位数据,cpu中的寄存器又可存放n个8位的数据,也就说计算机中的数据大多是由1~n个8位数据构成的。

为区分不同进制,在十六进制表示的数据后面加H,在二进制表示的数据后面加B。

几条汇编指令

汇编指令控制cpu完成的操作
mov ax,18将18送入寄存器ax
mov ah,78将78送入寄存器ah
add ax,8将寄存器ax中的数值加8
mov ax,bx将寄存器bx中的数据送入寄存器ax
add ax,bx将ax和bx中的数值相加,结果存在ax中
  • 在写一条汇编指令或一个寄存器的名称时不区分大小写

  • 在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的

物理地址

cpu访问内存单元时,要给出内存单元的地址。

cpu中给出物理(内存)地址的方法:物理地址=段地址*16+偏移地址

CS和IP

cs为代码段寄存器,ip为指令指针寄存器

设cs中的内容为m,ip中的内容为n,cpu将从内存m*16+n单元开始,读取下一条指令并且执行

  • cs和ip,它们的内容提供了cpu要执行指令的地址
  • cpu将cs和ip中的内容当作指令

cpu大部分寄存器的值,都可以用move指令来改变,move指令被称为传送指令,但是,move指令不能用于设置cs和ip的值

能改变cs,ip的内容的指令被统称为转移指令:jmp指令

若想同时改变cs,ip的内容,可以用**“jmp段地址:偏移地址”**完成

列如:jmp 2AE3:3,执行后:cs=2AE3H,IP=0003H,cpu将从2AE33H处读取指令

若想仅修改ip的内容,可用形如**“jmp 某一合法寄存器”**的指令完成

列如:jmp ax ,执行指令前:ax=1000H,cs=2000H,ip=0003H

​ 执行指令后:ax=1000H,cs=2000H,ip=0003H

"jmp 某一合法寄存器"指令的功能为:用寄存器中的值修改ip

cpu只认被cs:ip指向的内存单元中的内容为指令

查看cpu和内存,用机器指令和汇编指令编程

debug 是windows提供的实模式程序的调试工具。使用它可以查看cpu各种寄存器中的内容,内存情况和机器码级跟踪程序的运行。

常用到的debug功能

  • 用debug的R指令查看,改变cpu寄存器的内容
  • 用debug的D指令查看内存中的内容
  • 用debug的E指令改写内存中的内容
  • 用debug的U指令将内存中的机器指令翻译成汇编指令
  • 用debug的T指令执行一条机器指令
  • 用debug的A指令以汇编指令的格式在内存中写入一条机器指令
  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值