如果想将内存空间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
相关推荐
3. **内存管理**:在Windows中,内存管理是内核级任务的关键部分。书中会详细解释Windows的虚拟内存机制,包括页面表、页交换、分页和分段等概念,以及如何在内核模式下分配和管理内存。 4. **进程和线程**:进程和...
3. **中断和异常处理**:汇编语言可以处理中断和异常,这是操作系统与硬件交互的重要方式。例如,通过INT指令,我们可以调用操作系统提供的服务。 4. **Windows API调用**:编写Windows程序时,汇编语言程序员经常...
在"windows环境下64位汇编语言程序设计.txt"文件中,可能会详细阐述如何在64位环境下编写和调试汇编代码,包括使用MASM64、NASM或其他汇编编译器的技巧,以及Visual Studio或其它IDE的集成开发环境设置。此外,还...
32位汇编语言在Windows环境下需要处理内存分段和分页机制。每个进程都有自己的虚拟地址空间,汇编程序员需要知道如何正确地访问和操作内存,包括堆、栈的使用,以及动态内存分配。 四、线程与进程 Windows操作系统...
5. **内存管理**:解释段和段寄存器的概念,以及如何在汇编中分配和访问内存。 6. **实模式与保护模式**:讨论DOS下的实模式和Windows环境下的保护模式,以及它们对汇编编程的影响。 7. **调试技巧**:介绍如何使用...
- **Windows API调用**:使用汇编语言可以直接调用Windows API,如kernel32.dll中的函数,进行文件操作、窗口管理等。 - **堆栈操作**:汇编语言中,函数调用和返回涉及到堆栈的操作,如保存和恢复寄存器、传递...
#### 八、汇编语言中的计数方式 - **计数起点**:汇编语言中的计数通常从0开始,而非生活中常用的从1开始。例如,要表示16个计数,在汇编语言中表示为0至15。 以上是对《汇编语言心得》文档中的知识点进行了详细的...
《琢石成器_Windows环境下32位汇编语言程序设计》是一本深入探讨Windows操作系统下32位汇编语言编程的经典著作。作者罗云彬以其丰富的经验和深厚的理论基础,引领读者进入汇编语言的世界,揭示了计算机底层运作的...
5. **内存管理**:汇编语言程序需要手动管理内存,理解数据在内存中的布局,如何分配和释放内存空间,以及如何通过指针访问内存是重要的技能。 6. **过程与函数调用**:在Windows环境下,使用stdcall或cdecl调用...
3. **内存模型**:理解Windows下的内存管理,包括堆栈、数据段、代码段和堆的概念,以及如何通过段寄存器和偏移量访问内存地址。 4. **函数调用约定**:学习stdcall和cdecl两种常见的函数调用约定,理解参数传递的...
在Windows环境下进行32位汇编语言程序设计是一项技术性的任务,它涉及到计算机底层操作、内存管理和系统调用等核心概念。在这个主题中,我们主要关注以下知识点: 1. **汇编语言基础**:汇编语言是一种低级编程语言...
通过《Windows环境下32位汇编语言程序设计(第2版)》的学习,读者将不仅掌握汇编语言的基本技能,还能了解到如何在实际的Windows系统中运用这些技能,为系统级编程和性能优化打下坚实基础。该书的PDF版本提供了详细的...
"琢石成器 windows环境下32位汇编语言程序设计_代码"这个主题涵盖了汇编语言的基础概念、Windows API调用、内存管理、指令集应用等多个知识点。 首先,32位汇编语言是针对32位处理器(如Intel x86架构)设计的,...
9. **性能优化**:汇编语言的优势在于其可以直接控制硬件资源,因此在需要高性能计算或减少内存访问的场景下,汇编编程能够实现优化。 10. **内存管理**:理解Windows的内存管理机制,包括分配、释放内存以及虚拟...
光盘中的"Windows 32汇编程序设计"很可能包含了书中提到的示例源代码,读者可以通过实际运行和修改这些代码,加深对汇编语言的理解。此外,光盘可能还包含了调试工具(如OllyDbg或Windbg)的使用教程,帮助读者学会...
1.2 Windows汇编语言与DOS汇编语言的主要区别在于操作系统的环境和对硬件资源的访问权限。在DOS中,由于实模式的限制,需要使用分段来访问超过64KB的内存,而Windows的保护模式下,内存寻址更为直接,32位寄存器可以...
《WIN32汇编语言教程》是一本专为学习汇编语言设计的电子书,尤其针对Windows 32位环境下的编程。汇编语言是一种低级编程语言,它与计算机硬件紧密相连,允许程序员直接控制计算机的硬件资源,如CPU、内存和I/O设备...
在Windows系统中,汇编语言程序设计通常与Microsoft的MASM(Microsoft Assembler)或NASM(Netwide Assembler)等汇编器配合使用,它们将汇编语言代码转换为机器可执行的二进制代码。 1. **Windows API调用**:在...
程序控制结构,如循环、分支和函数调用,在汇编语言中也有其独特表示方式。书中会详细介绍如何实现这些结构,并提供实例帮助理解。此外,还会涉及中断处理,这对于操作系统级别的编程至关重要。 高级主题可能包括...