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

我的博客

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

[2013-02-04 23:35] 折腾,苦啊!Archlinux安装记

先声明一下,在下在linux方面是一无所知,毫无概念,只是在微软Windows长达十几年的熏陶下略感厌烦,再加上同学怂恿推波助澜,才会起安装Archlinux的心,却不曾想这Arch的安装界面严重违反UI设计的三条黄金原则,仅在前天看了半日linux资料的我虽有ArchWiki指导,却全无招架之功(不过据说相对于Arch,Gentoo可以用恐怖来形容,找天试试)。

桌面部分我想将折腾进行到底,没选择KDE、GNOME等集成好的桌面环境,而只是下了个定制度奇高的桌面管理器fvwm,准备自己一手一脚定制自己的Desktop。不过鉴于春节将至,急需一个较炫的环境,因此先下了个主题fvwm-cr...
阅读全文 | 评论次数(1) | 浏览次数(985) | 所属类型(linux)

[2011-09-04 11:23] 虚拟机

1、虚拟机概念的引入

我们不要单纯地以几种计算机语言思考问题,取而代之的是一系列假想的虚拟机组成的多层结构,每一层由一个虚拟机组成,其中虚拟机VMn执行Ln语言书写的指令。

每台虚拟机都可由硬件或软件构成。如果VMn是由一台真实的计算机构成的话,那么用Ln写的程序就可以直接在VMn的硬件上执行。除此以外,这个程序也可以通过解释或编译的方法转换为L(n-1)程序转到VM(n-1)上执行。

相邻每层虚拟机不应由根本不同,否则编译或解释的过程将过于耗时。如果VM0支持的语言对程序员不够友好,则可设计另外一个更易于理解的虚拟机VM1。此过程不断重复直到设计出VMn,它支持的语言功能强...
阅读全文 | 评论次数(0) | 浏览次数(685) | 所属类型(Intel汇编)

[2011-09-04 10:12] two‘s complement 完美释义

以前看到对two‘s complement的解释都是将各位取反然后加1得到。如此突兀的解释是在令人大惑不解。今天终于看到一个比较清晰的含义。

整数的two‘s complement就是其相反数,即x的two‘s complement与x相加的和为0.
如此便可将补码推广至任意进制。

若要求n位m进制数two‘s complement,则用n位0组成的数减之即可得。

经仔细观察上述计算过程,可得到一个具体的算法:将每位数字从m-1中减除(此过程称为取反)然后加一。...
阅读全文 | 评论次数(6) | 浏览次数(1120) | 所属类型(Intel汇编)

[2011-08-25 00:54] 长长地吐一口浊气,完成了,发一下课程设计二代码分享一下小经验

点击查看原图
经过连续几天的不懈奋斗,其中大错不断,小错连连,反复调试之下,终于看到效果。当中的波谲云诡、惊涛骇浪、柳暗花明非剧中人所能体会(言重了,关键是自己的粗心和懒惰,导致经常对明显的错误视若无睹)
学了将近一个月的汇编,终于明白为何那么少人写汇编。确实,写汇编不仅要考虑整个程序的框架,还要为实现一大堆细节而烦恼,痛苦啊!所以等我完成最后一章书就投回C++的怀抱。当然我还是不能离开汇编的舞台,毕竟这本教材屏蔽了太多知识,还是要继续深造。而且光学语言只能是工匠水平,所以还需花时间在离数和数据结构上。

好吧,现在说一下个人经验:
1.平台搭建
准备工具:Vmware(安装纯Dos),DiskG...
阅读全文 | 评论次数(13) | 浏览次数(1327) | 所属类型(汇编作业)

[2011-08-18 18:23] 光标版字符串的输入输出

实现在DOS中输入并显示字符串的功能,退格键删除,回车键结束,带光标

修改了教材上写显存输出字串的方法,用int 10h与int 21h,其他大致相同

思路:按一次键重新输出一次字串。ds:si指向字符栈。子程序string_stack有三个功能:字符的入栈、出栈、串的显示,用ah传递功能号,用top单元记录栈顶指针

注意:按下退格键时,字符弹出栈空间,但仍残留在显存


代码如下:
assume cs:code

data segment
dd 10 dup (0)  ;-----------字符栈
data ends

code segment
ma...
阅读全文 | 评论次数(0) | 浏览次数(750) | 所属类型(汇编作业)

[2011-08-18 00:13] int 16h的0号功能和与int 9比较

int 16h:
1)检测键盘缓冲区是否有数据
2)没有则继续1)
3)读取缓冲区第一个字单元
4)扫描码送入ah,ASCII送入al
5)将已读取的键盘输入从缓冲区删除

与int 9h比较:
int 9在按键时向键盘缓冲区写入数据
int 16h在程序对其调用时将数据从缓冲区读出

单纯调用16h中断时,屏幕是不会显示用户刚输入的字母

个人认为,int 16h中断例程中应有设置IF=1的指令,否则无法在缓冲区为空时调用int 9...
阅读全文 | 评论次数(3) | 浏览次数(917) | 所属类型(汇编作业)

[2011-08-17 23:39] 直接定址表:实验十六

题目:安装int 7ch中断,实现 0)清屏 1)设置前景色 2)背景色 3)向上滚一行
入口参数:
1)ah为功能号,如前文的每个功能前的小标号
2)对于2、3功能,用al传送颜色值(0~7)

注意事项:
table段中的数据表示子程序的绝对地址,所以放在了安装程序的上方.
而且新中段偏移地址应设为0

代码如下:
assume cs:code

code segment
;#############################
show_screen:
jmp short set
table dw clear,front,back,mov_up ;子程...
阅读全文 | 评论次数(0) | 浏览次数(769) | 所属类型(汇编作业)

[2011-08-17 23:28] 外中断一章小结及实验十五

实验十五题目:安装新int9中断例程,功能:按下'a',除非不松开,如果松开,就显示满屏"A",其他键照常处理。

预备知识:
1.可屏蔽中断:cpu遇到可屏蔽中断信息时,先检测IF,若IF=1,则引发中断,IF=0则相反。不可屏蔽中断类型码固定为2.

2.键盘输入:按下键盘上的一个键,则键盘上的一块芯片产生一个扫描码(通码),扫描码被送到主板上的相关接口芯片的寄存器中,其端口地址为60h;若是松开一个键,则产生一个断码。扫描码长度为一字节,通码第7位为0,断码为1,即:断码=通码+80h

3.9号中断:扫描码到达60h端口后,芯片向cpu发出中断类型码为9的中断信息,检测I...
阅读全文 | 评论次数(1) | 浏览次数(790) | 所属类型(汇编作业)

[2011-08-13 15:28] 一种精确延时/定时的方法(可达毫秒级)

不太喜欢之前发的那个延时程序,于是上网找了一个方法。具体如下:

PC机中有一个用于定时的集成电路,这个电路有三个通道,其中通道1用于控制系统内部的时钟,当系统启动时,它会发出一个频率为18.2Hz的信号,这个信号直接送到系统的中断控制器,每一Hz产生一个硬件中断,对应中断号为08h。也就是说,自系统启动,CPU就每隔1/18.2秒(约为55ms)执行一次08中断。这个中断的作用就是计数。

在内存中有一块四字节的空间用于保存计数值。cpu每执行一次08中断,该空间的数值就会加一。由此可知,系统每过n秒,计数值就会增加18.2*n(应用时,一般取整)。因此,当我们想要精确定时/延时时,...
阅读全文 | 评论次数(2) | 浏览次数(817) | 所属类型(汇编作业)

[2011-08-11 17:24] 延时子程序

用bx与ax表示一个32位的大数,bx存放高位字节,ax存放低位字节,然后利用循环递减一,直至为0
(若32位不够用,可增设寄存器)
PS:若把bx的值设得太大(如下),cpu的使用率貌似会狂飙至50%以上

delay:
push ax
push bx       

mov bx,0ffffh ;-----------------按需改变
sub ax,ax     ;-----------------按需改变

del_time:
sub ax,1
sbb bx,0

cmp ax,0
jne del_time

cmp bx,0
jne del_t...
阅读全文 | 评论次数(3) | 浏览次数(748) | 所属类型(汇编作业)
『 查看更多文章 』