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

我的博客

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

[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) | 浏览次数(887) | 所属类型(汇编作业)

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

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

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

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

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

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

我的虚拟软盘的原始数据内容如下图:
图

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

[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) | 浏览次数(1049) | 所属类型(汇编作业)

[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) | 浏览次数(893) | 所属类型(汇编作业)

[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) | 浏览次数(831) | 所属类型(汇编作业)

[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) | 浏览次数(924) | 所属类型(汇编作业)

[2011-08-30 15:09] 第15章 实验15 安装新的int 9中断例程

点击查看原图
assume cs:codesg, ss:stacksg

stacksg segment stack
        db 128 dup(0)
stacksg ends

codesg segment
        
start:        mov ax,stacksg
        mov ss,ax
        mov sp,128

        mov ax,cs
        mov ds,ax
        mov ax,0
        mov es,ax

        mov si,offset int9
        mov di,204h
        mov cx,offset int9end - offset int9
        ;批量复制int9中断例程内容至0:204...
阅读全文 | 评论次数(0) | 浏览次数(407) | 所属类型(汇编作业)

[2011-08-30 12:31] 第15章 检测点15.1

(1)仔细分析一下上面的int9中断例程,看看是否可以精简一下?
其实在我们的int9中断例程中,模拟int指令调用原int9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要再进行设置了。对于程序段:
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
————————
————————
分析:
int中断指令进行的工作:
1,取中断类型
2,标志寄存器入栈
3,IF=0,TF=0
4,CS,IP入栈
5,IP=n*4,C...
阅读全文 | 评论次数(0) | 浏览次数(428) | 所属类型(汇编作业)

[2011-08-26 14:57] 第14章 实验14 访问CMOS RAM

点击查看原图
程序如下,不知道我的这个算不算最简单的。
我用的是替换,然后直接用中断来打印。

assume cs:codesg, ds:datasg

datasg segment
        dt_adr db 9,8,7,4,2,0
        result db '??/??/?? ??:??:??','$'
datasg ends

codesg segment

start:
        mov si,offset dt_adr        ;各数据的位置偏移
        mov di,offset result        ;结果返回位置

        mov ax,datasg
        mov ds,ax

lp:        mov al,[...
阅读全文 | 评论次数(1) | 浏览次数(404) | 所属类型(汇编作业)
页码数(4):  1  2  3  4