如果想将内存空间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汇编程序的书仍然在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那时的8086处理器只支持实模式。在这种模式下,任何程序都可以寻址...
学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...
学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...
学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持 实 模式。在这种模式下,任何程序都可以...
学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...
学习用汇编语言 来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然 在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那 时的8086处理器只支持实模式。在这种模式下,任何程序都可以...
上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在运行整个系统。系统有多少内存,您就有多少内存。您甚至不必费心思去弄明白它有多少内存,因为每一台机器的内存数量都相同。所以,如果内存需要...
在编程领域中,编程语言可以分成机器语言、汇编语言和高级语言三大类。机器语言是计算机的本机语言,汇编语言是将机器语言转换成符号表示,高级语言是使用语法和命令来编写程序。高级语言主要包括VB、VC、FoxPro、...
4.27 汇编语言中多维数组元素的访问 4.28 大数组和MASM(只适用于Windows程序员) 4.29 记录 4.30 记录常量 4.31 记录数组 4.32 数组/记录作为记录字段 4.33 控制记录中的字面偏移量 4.34 对齐记录中的字段 4.35 ...
追溯到在 Apple II 上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在运行整个系统。系统有多少内存,您就有多少内存。您甚至不必费心思去弄明白它有多少内存,因为每一台机器的内存数量都相同。...
所属分类: 计算机 > 软件与程序设计 > 汇编语言/编译原理 > 汇编语言程序设计 编辑推荐 俄罗斯著名的安全技术专家Kris Kaspersky力作 横跨Windows和UNIX两大主流操作系统 全面介绍多种调试工具和方法 目录回到...
Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...
第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 虚拟...
CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为"命中",此时CPU直接从Cache中调用该内容;否则,就称为"不命中",CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出...
--- 动态链接库(Dynamic-Link Library...即可以用VC++、VB、PowerBuilder、Delphi、汇编语言等建立DLL,然后在不同语言编制的应用程序中调用它。下面用一个实例说明通过DLL实现PowerBuilder程序和VC++程序之间的连接。
以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司...
本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...
A、数据库系统 B、高级语言 C、源程序 D、汇编语言 4. 应用程序窗口缩成图标后,___A____是不正确的说法。 A、应用程序停止运行 B、应用程序继续运行 C、应用程序图标就放到了任务栏上 D、单击该图标,窗口就还原了 ...
1、计算机的软件系统可分为 A>程序和数据 B>操作系统和语言处理系统 C>程序、数据和文档 D>系统软件和应用软件 2、列关于存储器的叙述中正确的是 A>CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的...