汇编网首页登录博客注册
rotapple的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2011-10-09 17:23] 整本书已完成学习,开始学习罗云彬的WIN32汇编程序设计第2版

如题。。。...
阅读全文 | 评论次数(1) | 浏览次数(1114) | 所属类型(默认类型)

[2011-10-09 17:19] 综合研究

这一章我只进行了选择性性的分析,这里只写出答案了。具体的大家可以自己去尝试。
(3)用下面的方法打印出ur1.exe被加载运行时,main函数在代码段中的偏移地址:
main(){ printf("%x\n", main); }
结果为main的偏移地址是0x1fa

问题:C语言将全局变量存放在哪里?将局部变量存放在哪里?每个函数开头的push bp mov bp sp有何含义?
全局变量存在了分配的ds段,局部变量存放到了分配的ss段,每个函数开头的两句是为了使用栈分配临时变量而保存现场(参见附注4)。

(4)用Debug对m.exe进行跟踪:1,找到对main函数进行调...
阅读全文 | 评论次数(0) | 浏览次数(839) | 所属类型(汇编作业)

[2011-09-23 16:47] 突然想到一个问题,大家是为了什么而学汇编?

如题。...
阅读全文 | 评论次数(7) | 浏览次数(1176) | 所属类型(默认类型)

[2011-09-22 14:31] 第17章 课程设计2

首先写感想。
这是书上的最后一个设计了,也标志着我胜利了。
很有感触。
这段时间工作上手头很多事情所以没来汇编网,现在把弄好的设计发上来。

我把代码做了兼容(具体的修改方法见代码内),方便在本地运行以及虚拟机环境运行,但是整个代码没有做精简和优化,所以优化的余地非常大,不过这是后话了,现在也懒的去精简了。
另外代码内使用了一个新的伪指令equ,作用是定义一个常量,在编译时自动替换为数据,如:
CHR_A equ 32
mov ax,CHR_A
在编译时就是等于mov ax,32
其它的就没有新的了,都是书中学过的。

完成此设计的我的步骤:
1,写好大的主框架
2...
阅读全文 | 评论次数(12) | 浏览次数(1762) | 所属类型(汇编作业)

[2011-09-07 14:36] 实验17 编写包含多个功能子程序的中断例程

安装一个带有子程序的中断例程最需要注意的地方是定址表的偏移。
如果直接写table dw flag1,flag2那么它是相对于原CS的偏移,复制到0:200之后这个值必然是错的。所以在写定址表的时候需要注意计算。

我的虚拟软盘的原始数据内容如下图:
[img]multimedia/rotapple/images/pic_1315376818828.jpg[/img]

测试读取0面0道1扇区的512个字节之指定的es:0之后内存结果如下图:
mov ax,tempsg
mov es,ax
mov bx,0                ;读至目标tempsg:0
mov dx,0                ;从0面0道1扇...
阅读全文 | 评论次数(1) | 浏览次数(927) | 所属类型(汇编作业)

[2011-09-05 15:56] 我错了。。。关于17.3字符串输入

一开始以为文章里面的top有2个功能。
1,它代表地址
2,它指向一个内存数据
charpush:
    mov bx,top
    mov [si][bx],al
    inc top
    jmp sret


charpop:
    cmp top,0
    je sret
    dec top
    mov bx,top
    mov al,[si][bx]
    jmp sret

被我理解为:
1) 赋bx值为top的地址偏移。然后AL值传给该地址
2) cmp top让我理解为取top指向的值来和0对比。

其实第...
阅读全文 | 评论次数(1) | 浏览次数(888) | 所属类型(默认类型)

[2011-08-31 14:53] 第17章 检测点17.1

“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?

分析:
int16h所做的事:
1) 检测键盘缓冲区中是否有数据;
2) 没有则继续做第1步;
3) 读取缓冲区第一个字单元中的键盘输入;
4) 将读取的扫描码送入ah,ASCII码送入al;

然后书上提到了int9h中断例程和int16h中断例程是一对相互配合的程序,int9h生产,int16h则消费。

那么。
在int16h做事的时候,如果缓冲区没有按键,则一直1->2->1->2这么一直循环等待缓冲区有按键值,此时如果我们不把IF设为1,那么int19h例程如何被执行?
所以答案:这...
阅读全文 | 评论次数(3) | 浏览次数(984) | 所属类型(汇编作业)

[2011-08-31 10:20] 第16章 实验16 编写包含多个功能子程序的中断例程(细节分析及源码)

此题需要编写一个包含4个功能的7ch中断例程,包含:
1,清屏 2,设置前景色 3,设置背景色 4,向上滚动一行

分析:
此实验程序代码倒不是很难,因为在16.4章已经将程序代码全部给出。
此题考的就是对细节的考虑及处理:
1,这4个功能代码的大小
2,例程安装至0:200-0:2ff的256字节内,是否放得下?
3,子程序对传递的参数范围的检查及处理

对于问题1,咋一看,代码非常之长,大小我们先不管,因为计算麻烦。可以确定的是,这4个功能的代码非常长,也有点大。
对于问题2,给出的空间只有256字节空间,可以肯定的是:代码放不下!就算是放得下,以后要增加子功能呢?增...
阅读全文 | 评论次数(0) | 浏览次数(827) | 所属类型(汇编作业)

[2011-08-30 17:02] 第16章 检测点16.2

下面的程序将data段中的a处的8个数据累加,结果存储到b处的字中,补全程序。

assume cs:code, es:data

data segment
        a db 1,2,3,4,5,6,7,8
        b dw 0
data ends

code segment
start:
        mov ax,data    ;填空1
        mov es,ax      ;填空2

        mov si,0
        mov cx,8
s:        mov al,a[si]
        mov ah,0
        add b,ax
        inc si
        loop s

        mov ax,4c00h
        int 21...
阅读全文 | 评论次数(0) | 浏览次数(794) | 所属类型(汇编作业)

[2011-08-30 16:36] 第16章 检测点16.1

下面的程序将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序。

assume cs:code

code segment

        a dw 1,2,3,4,5,6,7,8
        b dd 0

start:
        mov si,0
        mov cx,8
s:        mov ax,a[si]         ;填空1
        add word ptr b[0],ax ;填空2
        adc word ptr b[2],0  ;填空3
        add si,2             ;填空4
        loop s

        mov ax,4c00h
        int 21h

code en...
阅读全文 | 评论次数(0) | 浏览次数(835) | 所属类型(汇编作业)
『 查看更多文章 』