实验2 用机器指令和汇编指令编程

《汇编语言第三版》王爽著  ------读书笔记 

 

1) 由于系统版本不同 的 缘故,数据段ffff:0 区间的值 可能存在 差别

 

;AX = 5BEA

;AX = 5CCA

;BX  = 30F0

;BX  = 6021

 

; SP = 00FE, 修改的内存单元地址是 2200:00FE 内容为 5CCA

; SP = 00FC, 修改的内存单元地址是 2200:00FC 内容为 6021

; SP = 00FE, ax = 6021

; SP = 00FE, bx = 5CCA

 

; SP = 00FE, 修改的内存单元地址是 2200:00FE 内容为 30F0

; SP = 00FC, 修改的内存单元地址是 2200:00FC 内容为 2F31

 

2)

可能由于系统的关系, 我的dos系统 值改变在 2200:00f0 这个区间 和寄存器对比可知,栈内改变的值 包括 AX = 5BEA,CS:IP = 0770:0012 和未知数据 01A6

 

这是由于T指令单步执行中断,为了保护现场,中断例程把寄存器的数据压入栈中(操作系统中内中断的知识)

 

具体的需要学习后面的章节内中断才能理解

 

 

注意

在debug中

例:

   只有debug才可以使用【...】

   在debug中,无法用H修饰,输入的数据都为16进制数字

 

 

在编译器中

以字母开头的十六进制数值,必须在前面加 0

    mov ax,ff (错误)

    mov ax,0ff(正确)

数字不加 H修饰的话,数据为十进制,编译后转16进制

  例:

         mov ax, 16    --->mov ax,10(十六进制)

         mov ax, 16H --->mov ax,16(十六进制

   使用编译器写指令时不可用【...】否则会被编译器解释为 ...

   例:   mov ax[0]  解释为 mov ax,0000

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值