zoukankan      html  css  js  c++  java
  • 汇编试验四:[bx] 和 loop 的使用

    预备知识:

      段前缀的使用;

     

    ffff:0~ffff:b 和 0020:0~0020:b 的数据;

     一次循环的复制效果:

    但是,这种方式DS的数据得修改;

    Source Code:

    assume cs:code
    
    code segment
        mov bx,0
        mov cx,12
    
    s:
        mov ax,0ffffH
        mov ds,ax
        mov dl,[bx]
    
        mov ax,0020H
        mov ds,ax
        mov [bx],dl
    
        inc bx
        loop s
    
        mov ax,4c00H
        int 21H
    
    code ends
    end

    于是,可以用两个段寄存器存放两个段地址;

    (原始数据)

     Source Code:

    assume cs:code
    
    code segment
        mov ax,0ffffH
        mov ds,ax           ;段地址
    
        mov ax,0020H
        mov es,ax           ;段地址
    
        mov bx,0            ;偏移地址
        mov cx,12
    
    s:
        mov dl,[bx]         ;默认ds,bx数据段
        mov es:[bx],dl
        inc bx
        loop s
    
        mov ax,4c00H
        int 21H
    
    code ends
    end

    试验任务:

    将0020:0~0020:f 放 0~63

    原始数据:

    效果如图;

     

    Source Code:

    assume cs:code
    
    code segment
        mov ax,0020H
        mov ds,ax
        mov bx,0
        mov cx,64
    
    s:
        mov [bx],bx
        inc bx
        loop s
    
        mov ax,4c00H
        int 21H
    
    code ends
    end

    试验任务2:将代码段里面的数据放到0020:0h处;

    先找出loop 前的指令编号是0015,就是从0000~0016 共23个长度;

    效果如图:

    成功将指令机器码放到指定位置;

     Source Code:

    assume cs:code
    
    code segment
        mov ax,cs
        mov ds,ax
        mov ax,0020H
        mov es,ax
    
        mov bx,0
        mov cx,23
    
    s:
        mov al,[bx]
        mov es:[bx],al
    
        inc bx
        loop s
    
        mov ax,4c00H
        int 21H
    
    code ends
    end
  • 相关阅读:
    定时执行
    history 命令历史
    last
    文件解压缩 tar zip
    硬件信息 dmidecode dmesg lsdev lshw haparm lsusb
    文件加密 解密 pdftk openssl gpg vim
    vim 脚本——插件
    irc
    telnet
    go 垃圾回收机制
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6920643.html
Copyright © 2011-2022 走看看