`

汇编语言中访问内存单元的方式(windows)

阅读更多

        如果想将内存空间2000:0,2000:1,2000:2中的数据分别放入al,bl,cl中,可以通过如下方式:

mov ax,2000h
mov ds,ax
mov al,[0]
mov bl,[1]
mov cl,[2]

         如果通过debug工具下a命令在指定地址写入汇编指令,输入后用u查看:

-a
0AF3:0100 mov ax,2000
0AF3:0103 mov ds,ax
0AF3:0105 mov al,[0]
0AF3:0108 mov bl,[1]
0AF3:010C mov cl,[2]
0AF3:0110
-u 0af3:0100
0AF3:0100 B80020        MOV     AX,2000
0AF3:0103 8ED8          MOV     DS,AX
0AF3:0105 A00000        MOV     AL,[0000]
0AF3:0108 8A1E0100      MOV     BL,[0001]
0AF3:010C 8A0E0200      MOV     CL,[0002]

         看起来一切ok的样子!但是如果把这段代码写入到汇编程序文件中,然后汇编、链接,用debug查看:

assume cs:code
code segment
   mov ax,2000h
   mov ds,ax
   mov al,[0]
   mov bl,[1]
   mov cl,[2]
   mov dl,[3]
   mov ax,4c00h
   int 21h
code ends
end

         debug u查看:

-u
0B53:0000 B80020        MOV     AX,2000
0B53:0003 8ED8          MOV     DS,AX
0B53:0005 B000          MOV     AL,00
0B53:0007 B301          MOV     BL,01
0B53:0009 B102          MOV     CL,02
0B53:000B B203          MOV     DL,03
0B53:000D B8004C        MOV     AX,4C00
0B53:0010 CD21          INT     21

         oh,这里变成了数值,根本没有当做内存偏移量.....

        好吧,只能用最土的办法了: mov bx,0 mov al,[bx]。其实还有一种简洁的方法,就是常量偏移量前加短地址: mov bx,ds:[0]  :

assume cs:code
code segment
   mov ax,2000h
   mov ds,ax
   mov bx,0
   mov al,[bx]
   mov bx,1
   mov bl,ds:[bx]
   mov cl,ds:[2]
   mov dl,ds:[3]
   mov ax,4c00h
   int 21h
code ends
end

         用debug查看:

-u
0B53:0000 B80020        MOV     AX,2000
0B53:0003 8ED8          MOV     DS,AX
0B53:0005 BB0000        MOV     BX,0000
0B53:0008 8A07          MOV     AL,[BX]
0B53:000A BB0100        MOV     BX,0001
0B53:000D 8A1F          MOV     BL,[BX]
0B53:000F 8A0E0200      MOV     CL,[0002]
0B53:0013 8A160300      MOV     DL,[0003]
0B53:0017 B8004C        MOV     AX,4C00
0B53:001A CD21          INT     21
分享到:
评论

相关推荐

    PC汇编语言(老外资料被翻译过来的 )

    学习用汇编语言来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那时的8086处理器只支持实模式。在这种模式下,任何程序都可以寻址...

    nasm PC汇编语言 PDF

    学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...

    汇编(PC汇编语言-翻译:伍星)

    学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...

    PC保护模式汇编语言

    学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持 实 模式。在这种模式下,任何程序都可以...

    PC汇编语言 BY Paul A. Carter

    学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...

    PC汇编语言中文版 By Paul A. Carter

    学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...

    内存管理内存管理内存管理

    上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在运行整个系统。系统有多少内存,您就有多少内存。您甚至不必费心思去弄明白它有多少内存,因为每一台机器的内存数量都相同。所以,如果内存需要...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C++语言?.pdf

    在编程领域中,编程语言可以分成机器语言、汇编语言和高级语言三大类。机器语言是计算机的本机语言,汇编语言是将机器语言转换成符号表示,高级语言是使用语法和命令来编写程序。高级语言主要包括VB、VC、FoxPro、...

    The Art of Assembly Language

    4.27 汇编语言中多维数组元素的访问 4.28 大数组和MASM(只适用于Windows程序员) 4.29 记录 4.30 记录常量 4.31 记录数组 4.32 数组/记录作为记录字段 4.33 控制记录中的字面偏移量 4.34 对齐记录中的字段 4.35 ...

    操作系统(内存管理)

    追溯到在 Apple II 上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在运行整个系统。系统有多少内存,您就有多少内存。您甚至不必费心思去弄明白它有多少内存,因为每一台机器的内存数量都相同。...

    黑客反汇编揭秘(第二版).part2.rar

    所属分类: 计算机 > 软件与程序设计 > 汇编语言/编译原理 > 汇编语言程序设计 编辑推荐 俄罗斯著名的安全技术专家Kris Kaspersky力作 横跨Windows和UNIX两大主流操作系统 全面介绍多种调试工具和方法 目录回到...

    windows驱动开发技术详解-part2

    Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...

    Windows应用程序捆绑核心编程光盘代码

    第1章 再谈计算机内存访问 1 1.1 引言 1 1.2 内存管理概述 1 1.2.1 虚拟内存 1 1.2.2 CPU工作模式 2 1.2.3 逻辑、线性和物理地址 3 1.2.4 存储器分页管理机制 3 1.2.5 线性地址到物理地址的转换 4 1.3 虚拟...

    计算机系统课程.docx

    CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为"命中",此时CPU直接从Cache中调用该内容;否则,就称为"不命中",CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出...

    pb调用dll实例

    --- 动态链接库(Dynamic-Link Library...即可以用VC++、VB、PowerBuilder、Delphi、汇编语言等建立DLL,然后在不同语言编制的应用程序中调用它。下面用一个实例说明通过DLL实现PowerBuilder程序和VC++程序之间的连接。

    c#学习笔记.txt

    以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司...

    Windows驱动开发技术详解的光盘-part1

    本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...

    会计理论考试题

    A、数据库系统 B、高级语言 C、源程序 D、汇编语言 4. 应用程序窗口缩成图标后,___A____是不正确的说法。 A、应用程序停止运行 B、应用程序继续运行 C、应用程序图标就放到了任务栏上 D、单击该图标,窗口就还原了 ...

    计算机应用基础试题和答案解析.doc

    1、计算机的软件系统可分为 A>程序和数据 B>操作系统和语言处理系统 C>程序、数据和文档 D>系统软件和应用软件 2、列关于存储器的叙述中正确的是 A>CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的...

Global site tag (gtag.js) - Google Analytics