zoukankan      html  css  js  c++  java
  • 实验五

    (1)程序返回前,data段中的数据:

    程序返回前,cs=076c,ss=076b,ds=076a

    code段地址为X,data段地址为X-2,stack段地址为X-1

    (2)程序返回前,data段中的数据:

    程序返回前,cs=076c,ss=076b,ds=076a

    code段的段地址为X,则data段地址为X-2,stack段地址为X-1

    对定义如下的段:

    name segment:

    ...

    name ends

    若段中数据占N个字节,则程序加载后,该段实际占有的空间:(N/16+1)*16

    (3)

    程序返回前,data段中的数据:

     

    程序返回前,cs=076a,ss=076e,ds=076d

    code段的段地址为X,则data段地址为X+3,stack段地址为X+4

    (4)

    题(3)中的可以顺利执行,因为题(3)中代码段放在第一位,若不指明程序入口,默认第一个为程序入口。

    (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 0,0,0,0,0,0,0,0
    c ends
    
    code segment
    start:    
        mov cx,8
        mov bx,0
    
    s:             
        mov dl,0
        mov ax,a
        mov ds,ax
        add dl,[bx]
        
        mov ax,b
        mov ds,ax
        add dl,[bx]
    
        mov ax,c
        mov es,ax
        mov es:[bx],dl
    
        inc bx
    loop s
    
    mov ax,4c00h
    int 21h
    
    code ends
    end start

    截图:

    未运行前:

    运行后:

    经过验证,实验数据确实相加了。

    (6)源代码:

     1 assume cs:code
     2 a segment
     3     dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
     4 a ends
     5 
     6 b segment
     7     dw 0,0,0,0,0,0,0,0
     8 b ends
     9 
    10 code segment
    11 start:
    12     mov cx,8
    13     mov ax,a
    14     mov ds,ax
    15     mov ax,b
    16     mov ss,ax
    17     mov sp,10h
    18     mov bx,0
    19     
    20 s:
    21     push [bx]
    22     add bx,2
    23 loop s
    24 
    25     mov ax,4c00h
    26     int 21h
    27 code ends
    28 end start

    实验结果截图:

    由图可知,运行前b段都为0,运行后将这八个字型数据逆序存入该段中。

    二.总结与体会

    在这一块中,我更多学习了关于多个段的程序编写的方法,而且了解到各个程序段我们该学会如何去安排他们。

    通过不同段的存放,避免了长度不能超过64kb的问题,还是很实用的。

  • 相关阅读:
    minixml3.1库的使用
    linux coredump及函数栈空间大小分析
    linx 设备名字来由 sd sr sg st
    gcc 遇到过的语法问题
    I帧、B帧、P帧、NALU类型
    linux grub 使用
    结构体sockadrr、sockaddr_in、in_addr的定义
    linux c log 日志接口
    关于32位/64位版本头文件的重要
    汇编指令缩写
  • 原文地址:https://www.cnblogs.com/xcss831/p/10015730.html
Copyright © 2011-2022 走看看