
ASM
eagleatustb
学习永远没有终点
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
王爽《汇编语言》第6章 包含多个段的程序
理解在汇编中为数据分配空间的方式: 我们可以在程序中,定义我们希望处理的数据,这些数据就会被编译、连接程序作为程序的一部分写到可执行文件中,当可执行文件中的程序被加载入内存时,这些数据同时被加载入内存。与此同时我们要处理的数据也就自然而然的获得了存储空间。 使用g命令执行运行到某个地址的功能。 在伪指令end后面加上标号表示程序入口点。这个入口点在PE文件里体现在原创 2012-11-16 15:43:35 · 1336 阅读 · 0 评论 -
王爽《汇编语言》第10章 实验10 编写子程序
花了三个多小时写出来的东西,真费劲。。。接下来就是本书的两个课程设计之一。assume cs:codedata segment db 'Welcome to masm!',0data endsnumberdata segment dw 123,12666,1,8,3,38numberdata endscode segmentstart: ;测试显示函数 mov d原创 2012-11-20 16:42:00 · 2077 阅读 · 3 评论 -
王爽《汇编语言》第10章 课程设计1
作为一个其中考试性质的课程设计,的确有一定难度,缩了前面学习到的各个存储器的使用,栈的使用,函数设计以及调用技巧,转移函数使用(在这个课题设计中犯了两次jmp和jczx+loop使用的错误,印象深刻),经过今天6个小时的努力,终于顺利实现。这里实现dtoc功能的时候没有按上一个测试那样使用0结尾,为的是方便整行输出数据,这里不影响整体实现。不多说,上代码,上的图有一张是之前错误显示的,是因为对jm原创 2012-11-21 14:30:18 · 1062 阅读 · 0 评论 -
王爽《汇编语言》第9章 实验9 根据材料编程
实现向屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm'assume cs:codesg,ds:datasgdatasg segment db 'welcome to masm!'datasg endscolor segment db 00000010B ;黑底绿字 db 00100100B ;绿底红字 db 01110001B ;白底蓝字原创 2012-11-19 16:33:40 · 2803 阅读 · 0 评论 -
王爽《汇编语言》第10章 检测点10.5(1)的疑问
题目:下面的程序执行后,ax中的数值为多少?(注意用call指令的原理来分析,不要在Debug中单步跟踪来验证你的结论。对于此程序,在Debug中单步跟踪的结果,不能代表CPU的实际执行结果)assume cs:codesgstack segment dw 8 dup (0)stack ends codesg segment start: mov ax,stack m原创 2012-11-20 10:04:56 · 3157 阅读 · 0 评论 -
王爽《汇编语言》第9章 实验8 分析一个奇怪的程序
问:以下代码,程序为什么能正常结束?assume cs:codesgcodesg segment mov ax,4c00h int 21hstart: mov ax,0 s: nop nop mov di,offset s mov si,offset s2 mov ax,cs:[si]原创 2012-11-19 15:30:46 · 1961 阅读 · 0 评论 -
王爽《汇编语言》第9章 转移指令的原理
可以修改IP,或同时修改CS和IP的指令统称为转移指令。 段内转移只修改IP,分为短转移和近转移。 转移指令可以分为:无条件转移指令,条件转移指令,循环指令,过程,中断这五类。 offset取得段偏移地址。 jmp为无条件转移指令,jmp shor只修改IP,范围为-128~127. 注意jmp在只修改IP时,使用的是相对地址,所以同一个原创 2012-11-19 13:23:38 · 1168 阅读 · 0 评论 -
开始学习汇编语言
计划两周学习完汇编的基本知识,到达看懂一般简单汇编程序的水平。 现在是第一周周四,已经学习完前六章,看来计划进度应该不会有太大的差距,但是需要巩固前面学习到的知识。就想起开个博客记录一下自己学习的心得,看到这里有不少人用王爽老师的教材,是个好地方,也欢迎大家和我的讨论。 我也是初学者,呵呵。此为开篇。原创 2012-11-16 15:42:49 · 1036 阅读 · 1 评论 -
王爽《汇编语言》第7章 更灵活的定位内存地址的方法
这章增加了一些常用的指令使用方法,但没有小结,我就自己小结一下。 1.and和or,用于位的与或,是一个很基础的逻辑操作用法,一定要灵活掌握。像(n+40H-1)&~(40H-1)和n&~(40H-1)是什么意思应该熟悉。 2.使用逻辑操作实现大小写的转换 3.[bx+idata]来指明一个内存单元,在这里,我认为这个操作既然是一条指令,那么中间就不应该有中断发生原创 2012-11-16 15:45:52 · 1454 阅读 · 0 评论 -
王爽《汇编语言》第8章 实验7 不使用栈的解法
assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981','1982' db '1983','1984','1985','1986','1987','1988','1989','1990'原创 2012-11-16 15:47:46 · 1415 阅读 · 0 评论 -
王爽《汇编语言》第8章 数据处理的两个基本问题
本章重点问题:处理的数据放在什么地方;要处理的数据有多长。 1.[bx]的基址是ds,[bp]的基址是ss。所以bx,bp不能在一起做偏移的寻址,si和di默认基址是ds,但若和bp一起使用则基址为ss。另外,si+-di不能在没有bx或bp的时候作运算。 2.指令执行前数据可以在3个地方:内存,寄存器,指令缓冲器。 3.数据位置表达方式:立即数,寄存器,段地址+原创 2012-11-16 15:46:21 · 1230 阅读 · 0 评论 -
王爽《汇编语言》第6章 实验5 第6题 疑问
以下程序执行起来出了一个我无法解析的问题。循环执行到cx=3时,add bx,2执行后居然出现乱跳转的情况,目前还没搞清楚到底怎么一回事。 assume cs:code a segment dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh a ends b segment dw 0,0原创 2012-11-16 15:44:51 · 1729 阅读 · 0 评论 -
王爽《汇编语言》问题7.9 将datasg段中每个单词的前4个字母改为大写字母
assume cs:codesg,ds:datasg datasg segment db '1. display ' db '2. brows ' db '3. replace ' db '4. modify ' datasg ends stack se原创 2012-11-16 15:45:29 · 8221 阅读 · 0 评论 -
a.out格式解析
最近在看linux0.11代码,涉及到很多linux系统特性的东西,以下收集到a.out格式的文档。维基上的介绍也不够详细:http://en.wikipedia.org/wiki/A.out 来源:http://modman.unixdev.net/?sektion=5&page=a.out&manpath=SunOS-4.1.3A.OUT(5)转载 2014-01-23 10:06:32 · 4541 阅读 · 0 评论