1月26日 汇编语言日记

字节:byte,一个字节由八位组成
字:word,一个字由两个字节组成
寄存器:寄存器是cpu中程序员可以用指令读写的部件,程序员通过改变寄存器中的内容来实现对cpu的控制。
通用寄存器:存放一般数据的寄存器。
8086cpu有14个寄存器:ax,bx,cx,dx,si,di,sp,bp,ip,cs,ss,ds,es,psw,所有的寄存器都是十六位的。
ax,bx,cx,dx为通用寄存器,这四个寄存器都可分为两个可独立使用的8位寄存器来用。(ax分为ah(高八位)和al(低八位))
几条汇编指令:move ax,18(ax=18);add ax,8(ax=ax+8);add ax,bx(ax=ax+bx).
当对于al寄存器使用时,cpu默认al和ah是独立的,因而不会进位到ah中。
注意操作的两个对象要位数一致,否则指令是错误的。
cpu访问内存单元时需要内存地址,内存单元构成的存储空间是一维线性空间。每一个内存单元在这个空间中都有唯一的地址,我们将这个地址称为物理地址。不同cpu可以有不同形成物理地址的方式。
16位结构(16位机,字长为16位等常见说法,与16位结构含义相同)描述了一个cpu具有下面几方面的结构特性:运算器一次最多可处理16位数据;寄存器的最大宽度为十六位;寄存器与运算器之间的通路为16位。
8086cpu采用在内部用两个16位寄存器合成的方式形成一个20位的物理地址(20位宽的地址总线)。
当此cpu要读写内存时:相关部件提供两个16位地址:一个是段地址,一个是偏移地址。
地址加法器通过采用:物理地址=段地址*16(段地址左移四位)+偏移地址 的方式合成物理地址。
“段地址*16+偏移地址=物理地址”的本质含义为:cpu在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。(其实内存并没有分段,只是这种方式使得我们能用分段的方式来管理内存。)
对于8086一个段最多为64kb。
段寄存器:(cs,ds,ss,es)
cs和ip是8086cpu最重要的两个寄存器。
cs为代码段寄存器,ip为指令指针寄存器。
设cs的内容为m,ip的内容为n,在8086中任意时刻,cpu将cs:ip(cs*4+ip)指向的内容当做指令执行。
不能用mov来改变cs和ip的内容
但是可以以哦能够jmp命令,如:执行jmp 2A13:0B16后  CS=2A13H,IP=0B16H
指令jmp 某以合法寄存器的功能为:用寄存器中的值修改ip。如:jmp ax,执行前:ax=1000h,cs=2000h,ip=0003h;执行后ax=1000h,cs=2000h,ip=1000h。
debug是dos、windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看cpu各种寄存器中的内容,内存的情况和在机器码级跟踪程序的运行。
debug的功能:
-r命令:查看,改变cpu寄存器的内容;
    -r查看
    -r ax 改变ax寄存器内容
-d命令:查看内存中的内容;
    -d 1000:0(偏移地址)查看从此开始128个内存
    -d 1000:0 9 表示开始-结尾要多少个字节
    -d 表示列出预设地址
-e命令:改写内存中的内容;
    -e 起始地址(偏移地址) 数据 数据 数据…… 一次改变内存
    可以用字符‘(注意转换成asc码),也可以写入字符串用“
-u命令:将内存中的机器指令翻译成汇编指令
    -u 起始地址 可以将机器码转化成汇编码
-t命令:执行一条机器指令;(注意cs:ip指向的内存)
-a命令:以汇编指令的格式在内存中写入一条机器指令。
    -a 起始地址
这只是一部分,debug一共有20多个命令,以后会接触到p命令。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值