zoukankan      html  css  js  c++  java
  • 汇编语言 实验5

    实验5

    实验任务1:编写、运行书中含有多个段的程序,观察实验结果,完成填空

    (1)

     

    (2)

     

    (3)(4)

     

    简要调试过程:

     

     

    tips:

    程序返回后有许多附属的代码段

    实验任务2:编写code中的代码,将a,b段的数据一次相加,结果保存到c段中

    源代码:

     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

    c0 segment ; 在集成软件环境中,请将此处的段名称由c→改为c1或其它名称
    db 8 dup(0)
    c0 ends ; 改的时候要成对一起修改

    code segment
    start:
    ;修改(不能用栈,因为入栈出栈都是以字数据为一个单元来完成的,而这里是字节型数据)
    mov ax,a
    mov ds,ax

    mov bx,0
    mov cx,8h

    to:mov ah,0
    mov al,[bx]
    mov dx,b
    mov es,dx
    add al,es:[bx]
    mov dx,c0
    mov es,dx
    mov es:[bx],al
    add bx,1
    loop to
    ;修改
    mov ax,4c00h
    int 21h
    code ends
    end start

     进入debug环境,用反汇编查看代码:

    在实现数据相加前后,逻辑段 c 的 8 个字节:

     

    调试过程:

     

    实验任务3:编写code中代码,用push指令将a中的8个字型数据,逆序存储到b段中

    源代码:

    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,10h

    mov bx,0
    mov cx,8h

    s0:push [bx]
    add bx,2h
    loop s0

    mov ax,4c00h
    int 21h
    ;修改
    code ends
    end start

    进入debug环境后,用反汇编查看代码:

    在 push 操作执行前后,查看逻辑段 b 的 8 个字单元:

     

    调试过程:

     

     

     

    实验5——总结

    收获:通过这次实验,我懂得了怎么将各个寄存器分段进行存储(也可以在cs段前面定义数据,但是这样没有用分段这么简洁明了),知道了分段存储时段与段之间的相对位置关系,明白了标号和程序入口的重要性,学会了利用栈段做各种数据存储的操作。

    问题:分段存储时,为什么段与段之间的相对位置不会发生改变呢?这样的相对位置是如何得到的呢?

  • 相关阅读:
    IDEA 如何恢复默认布局 和显示项目目录导航
    jdbcTemplate 和 Thymeleaf模板引擎 查询 到模板赋值例子
    <meta charset="UTF-8"> 出错
    spring boot Thymeleaf模板引擎 最简单输出例子
    spring boot jpa 无法自动生成表
    IDea 运行程序就说ClassNotFind:com.jdbc.mysql.Driver
    pom.xml 里面dependency 添加spring-boot-starter-data-jpa 后运行出错
    IDEA 同时启动两个环境
    cannot resolve symbol
    Shell之expect的测试
  • 原文地址:https://www.cnblogs.com/cjh-1023/p/10015659.html
Copyright © 2011-2022 走看看