汇编基础——玩转寄存器

任务1-运行程序,观察内存

蜂蜜抽子

各寄存器的初始值为:(CS)=2000H, (IP)=0, (DS)=1000H, (AX)=0, (BX)=0

(1) CPU执行的指令序列:

①初始时,CS:IP为2000H:0,则执行 mov ax,6622H;→ ②IP自增,执行 jmp 0ff0:0100;→③ 执行完跳转指令,跳转到10000H处,执行mov ax,2000H;→④ 顺序执行mov ds,ax;→⑤ mov ax,[0008];→⑥ mov ax,[0002];

(2) 写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。

答:

  1. 执行的第1条指令是: mov ax,6622H   
      执行后相关寄存器中的值为:
    DS: 1000H   CS: 2000H    IP: 0003H   AX: 6622H    BX: 0000H   
  2. 执行的第2条指令是: jmp 0ff0:0100     
      执行后相关寄存器中的值为:
    DS: 1000H    CS: 0ff0H   IP: 0100H   AX: 6622H   BX: 0000H   
  3. 执行的第3条指令是: mov ax,2000H   
      执行后相关寄存器中的值为:
    DS: 1000H    CS: 0ff0H   IP: 0103H   AX: 2000H   BX: 0000H   
  4. 执行的第4条指令是: mov ds,ax  
      执行后相关寄存器中的值为:
    DS: 2000H    CS: 0ff0H   IP: 0105H   AX: 2000H   BX: 0000H   
  5. 执行的第5条指令是: mov ax,[0008]  
      执行后相关寄存器中的值为:
    DS: 2000H    CS: 0ff0H   IP: 0108H   AX: C189H   BX: 0000H   

执行的第6条指令是: mov ax,[0002]   
  执行后相关寄存器中的值为:
DS: 2000H    CS: 0ff0H   IP: 010BH   AX: EA66H   BX: 0000H

(可用debug运行验证)

任务2-理解栈机制

已知(SS)=3000H,(SP)=200H,(AX)=785AH,(BX)=1234H

2-1 在下面空白处写下结果(请在分析的过程中,在草稿纸上画出栈的结构来)

先执行

PUSH AX(解析:(SP)=(SP)-2,将ax的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶

PUSH BX(解析:(SP)=(SP)-2,将bx的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶

指令后,(SS)=  3000H (SP)=  01FCH  

存放12H的字节数据的物理地址是 301FDH  

再执行

POP AX

POP BX

此时(AX与BX交换数据)

  (AX)=  1234H  

  (BX)=  785AH

蜂蜜抽子

掌握好基础,才能稳步前行~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值