• 实验五


    实验任务1:

    1.运行程序 用r查看寄存器值 cs:076c,ss:0769,ds:075a

    2.用u命令反汇编 

    知道程序返回前应是0019

    3.用g命令执行到001d 查看data中的值 关掉程序重新debug 对比076a中0~f 值不变

    回答:1、data中数值不变 如上图

              2、程序返回前cs:076c ds;076a ss:076b

              3、data地址为x-2,stack为x-1

    实验任务2:

    1. debug代码 观察cs的值,用u反汇编

    2. 用g命令执行

     

    回答:1、data中值没变

              2、可见CS:076C,SS:076B,DS:076A

              3、设程序加载后,code段的段地址为X,则data为X-2,stack为X-1

         4、该段实际占有的空间:(N/16+1)*16   也就是说 不满16的空间会被自动补全

    实验任务3:

    1、debug后用u查看 用g运行到程序返回前

    data中数据:

    ds:076d ss:076e cs:076a

    data地址x+2 stack地址为x+4

    实验任务4:

    在notepad中修改123的指令end start->end

    例如运行程序1 用u反汇编

    不是我们想要看到的代码 说明程序失败

    实验二同样这样 只有实验三可以

    实验任务5:

    代码:

    assume cs:code
    a segment
      db 1,2,3,4,5,6,7,8
    a ends
    
    b segment
      db 1,2,3,4,5,6,7,8
    b ends
    
    c segment  
      db 8 dup(0)
    c ends     
    code segment
    start:
      mov cx,8
    s:mov dx,0
      mov ax,a
      mov ds,ax
      add dl,[bx]
      mov ax,b
      mov ds,ax
      add dl,[bx]
      mov ax,c
      mov ds,ax
      mov [bx],dl
      inc bx
      loop s
      mov ax,4c00h
      int 21h
    code ends
    end start

    在dosbox中debug 用u反汇编 用g执行到返回前

    查看实验结果 ds即是c的段地址 发现程序运行成功 

    在程序运行前ds:

    程序运行后:

     实现了a和b的相加

    实验任务6:

    实验代码;

    assume cs:code
    a segment
      dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
    a ends
    
    b segment
      dw 8 dup(0)
    b ends
    
    code segment
    start: 
      mov ax,a
      mov ds,ax
      mov ax,b
      mov ss,ax
      mov sp,0fh
      mov cx,8
    s:push [bx]
      add bx,2
      loop s
      mov ax,4c00h
      int 21h
    code ends
    end start

    如图执行到push之前

    此时ss中均为0

    再运行到程序返回之前

    可见程序完成了要求

    实验总结: 在执行多段程序中 end start必不可少 不然程序无法找到执行的入口

                      8086机制下,不管data段等内容满不满16 都会自动补全。

                      此次试验巩固了各种命令的使用。

  • 相关阅读:
    前端面试攻略1------算法部分
    MongoDB学习
    MongoDB作为Windows服务来安装 错误1053:服务没有及时响应启动或控制请求
    Vue 入门之 Vuex 实战
    Vue 路由详解
    vue入门全局配置
    VSCode配合ESLint自动修复格式化
    vue入门之单文件组件
    Echarts图表-学习
    GoJS学习
  • 原文地址:https://www.cnblogs.com/masami/p/10012935.html
Copyright © 2020-2023  润新知