zoukankan      html  css  js  c++  java
  • 第七章 更灵活定位内存地址

    1、and指令:逻辑与指令,按位进行运算,通过and指令可将操作对象的相应位设为0,其他位不变,例:and al 10111111B。or指令:逻辑或指令,按位进行运算,通过or指令可将操作对象的相应位设为1,其他位不变,例:or al 01000000B。

    2、用字母表示数据,例:‘a’。

    3、小写转大写and al 11011111b。大写转小写or al 00100000b。

    4、[bx+idata]形式实现数组:idata[bx]。

    5、SI和DI寄存器:16位寄存器,但是不能够分为两个8位寄存器来使用。

    6、16位寄存器进行内存单元之间的数据传送,一次复制两个字节。[bx][si]。

    7、[bx+si+idata]和[bx+di+idata]。200[bx][si]、[bx][si].200。

    8、在每次开始内层循环的时候,将外层循环的cx中的数值保存起来(用dx),在执行外层循环的loop指令前,再恢复外层循环的cx数值。但是dx被使用了。。。。

    9、改进1:开辟内存空间临时存放cx的值。

    10、改进2:。二重循环将第一层循环入栈保存

    11、下一章将对寻址方式的问题进行更深入地探讨。之所以如此重视这个问题,是因为寻址方式的适当应用,使我们可以以更合理的结构来看待所要处理的数据。而为所要处理的看似杂乱的数据设计一种清晰的数据结构是程序设计的一个关键的问题。

     

    View Code
     1 assume cs:code,ds:data,ss:stack
    2
    3 data segment
    4 db 'ibm '
    5 db 'dec '
    6 db 'dos '
    7 db 'vax '
    8 data ends
    9
    10 stack segment
    11 dw 0,0,0,0,0,0,0,0 ;栈段存储临时数据
    12 stack ends

    13
    14 code segment
    15
    16 start: mov ax,stack
    17 mov ss,ax
    18 mov sp,16
    19 mov ax,data
    20 mov ds,ax ;设置ds指向datasg段
    21

    22 mov bx,0 ;用bs定位行
    23

    24 mov cx,4
    25 s0:push cx ;将外层循环的cx压栈
    26 mov si,0 ;用si定位列
    27 mov cx,3 ;cx设置内层循环的次数
    28

    29 s:mov al,[bx+si+3]
    30 and al,11011111b
    31 mov [bx+si+3],al
    32
    33 inc si
    34 loop s ;此时cx已经为零
    35

    36 add bx,16
    37 pop cx ;从栈顶弹出原cx的值,恢复cx
    38 loop s0 ;外层循环的loop指令中将cx中的计数值减1
    39

    40 mov ax, 4c00h
    41 int 21h
    42
    43 code ends
    44
    45 end start ;指明程序的入口在start处

     

     

  • 相关阅读:
    Robot Framework + Selenium library + IEDriver环境搭建
    【转】大话测试数据(一)
    TEST DESIGN TECHNIQUES: AN OVERVIEW
    24 WHEN CAN WE STOP TESTING?
    MySql Trace
    ORGANISING THE TEST CASES
    angular教程
    vue报错一
    sort()
    时间戳
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2394373.html
Copyright © 2011-2022 走看看