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
  • 相关阅读:
    Java实现web页面内容抓取
    Java写入文件的几种方法及性能对比
    Java实现导出excel
    win10系统安装VMware虚拟机软件以及linux系统
    oracle11g安装教程
    oracle怎么建立本地连接
    工厂模式
    计算一个字符串中每个字符出现的次数
    MySql多表查询
    如何查看MySql的sql语句性能
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6920643.html
Copyright © 2011-2022 走看看