zoukankan      html  css  js  c++  java
  • 汇编试验五:编写、调试具有多个段的程序

    ds 数据段放入数据正确;

    两次push 操作后,ss栈段正确;

    由于pop 操作顺序,ds数据段并没有发生改变;

     Source Code:

    assume cs:code, ds:data, ss:stack
    
    data segment
        dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
    data ends
    
    
    stack segment
        dw 0,0,0,0,0,0,0,0
    stack ends
    
    code segment
    start:
        mov ax,stack
        mov ss,ax
        mov sp,16
    
        mov ax,data
        mov ds,ax
    
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
    
        mov ax,4c00H
        int 21H
    
    code ends
    end start
    View Code

    (2)程序加载后,数据段和栈段加载后,实际占据的空间是以16个字节为单位。程序中只给出了前两个字,其他空间都是补充0;

    Source Code:

    assume cs:code , ds:data , ss:stack
    
    data segment
        dw 0123H,0456H
    data ends
    
    stack segment
        dw 0,0
    stack ends
    
    code segment
    
    start:
        mov ax,stack
        mov ss,ax
        mov sp,16
    
        mov ax,data
        mov ds,ax
    
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
    
        mov ax,4c00H
        int 21H
    code ends
    end start
    View Code

    (3)

    Source Code:

    assume cs:code ,ds:data, ss:stack
    
    code segment
    start:
        mov ax,stack
        mov ss,ax
        mov sp,16
    
        mov ax,data
        mov ds,ax
    
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
    
        mov ax,4c00H
        int 21H
    code ends
    
    
    data segment
        dw 0123H,0456H
    data ends
    
    stack segment
        dw 0,0
    stack ends
    
    end start
    View Code

    相比之前,三个段的顺序发生改变,数据没有改变,但是三个段的入口地址肯定变了;

    具体差别:

    代码段标号减小;

    (5) a 段 + b 段 的和,放到 c 段;

    (栈段也可以用 段地址+偏移地址访问)

    Source Code:

    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 ax,a
            mov ds,ax
    
            mov ax,b
            mov ss,ax   ;栈段
    
            mov ax,c
            mov es,ax
    
            mov bx,0
            mov cx,8
    
        s:
            mov al,ds:[bx]
            add al,ss:[bx]  ;栈段也段地址+偏移地址访问
            mov es:[bx],al
    
            inc bx
            loop s
    
            mov ax,4c00H
            int 21H
    code ends
    end start
    View Code

    (6)将a段的前8个字,逆序放到 b 段中;

    入栈的方式,即为逆序;

    Source Code:

    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 0,0,0,0,0,0,0,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,8
    
        s:
            push ds:[bx]
            add bx,2
    
            loop s
    
        mov ax,4c00H
        int 21H
    
    
    code ends
    end start
    View Code
  • 相关阅读:
    auth
    django缓存机制
    图片防盗链
    用户相关
    验证码
    单个容器部署django (docker + django + uwsgi)
    MySQL性能调优的10个方法
    数据库-外键
    数据库(存储引擎、字段类型、约束条件)
    数据库
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6920881.html
Copyright © 2011-2022 走看看