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

我的博客

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

[2012-07-02 00:27] 课程设计2 - release

;修正了前一个版本日期时间设置函数的bug
;增加局部代码的注释
;对应课题要求,去掉了主菜单对ESC的处理,也去掉了showclk中清空键盘缓冲区的处理
;各功能做了较完整的测试,整个功能比较完整。第17章的内容学习就此结束。

assume cs:code

code segment

main:
        ;读第二个扇区数据到7e00h
        mov ax, 0
        mov es, ax
        mov bx, 7e00h

        mov ah, 2        ;read
        mov al, 1        ;读取的扇区数
        mov ch, 0        ;磁道号
        mov cl, 2        ;扇区号
        mov ...
阅读全文 | 评论次数(1) | 浏览次数(449) | 所属类型(汇编作业)

[2012-06-30 03:07] 课程设计2

好久没的扣腚到凌晨,今天竟然扣到三点,才写出了下面的代码。勉强能够实现
功能。设置时间的地方有一点问题。其余的数个地方不具有可移植性,把代码写
死了。无论如何,它可以运行。enjoy ~


assume cs:code

code segment

main:
        ;读第二个扇区数据到7e00h
        mov ax, 0
        mov es, ax
        mov bx, 7e00h

        mov ah, 2        ;read
        mov al, 1        ;读取的扇区数
        mov ch, 0        ;磁道号
        mov cl, 2        ;扇区号
        mov dh, 0        ;磁头号
        mov dl,...
阅读全文 | 评论次数(4) | 浏览次数(452) | 所属类型(汇编作业)

[2012-06-23 16:57] 第17章 使用BIOS进行键盘输入和磁盘读写

点击查看原图
17 - 第17章 使用BIOS进行键盘输入和磁盘读写

我是在virtualbox虚拟机里做这些实验的。本章实验需要写软盘,所以要先添加一个软盘设备。在Linux里先做一个软盘的img文件,然后在virtualbox的设置里添加进来。

dd if=/dev/zero of=floppy bs=512 count=2880

先用下面这个程序判断一下是否可以成功读写软盘。注意debug单步调试的时候,int 13h命令时使用-p,然后看其返回结果ah是否为0(成功为0)。

assume cs:code

code segment

start:

     ; ...
阅读全文 | 评论次数(1) | 浏览次数(448) | 所属类型(汇编作业)

[2012-06-22 17:55] 第16章 直接定址表

点击查看原图
16 - 第16章 直接定址表

此题稍麻烦的地方是各sub的地址在安装到0:200h之后是有改变的,所以需要我们自己根据安装之前各sub的相对地址来计算最终中断处理程序中要跳转的地址。


assume cs:code

code segment

    
     
start:     
     mov ax, cs
     mov ds, ax
     mov si, offset int7ch
    
     mov ax, 0
     mov es, ax
     mov di, 200h
    
     mov cx, ...
阅读全文 | 评论次数(1) | 浏览次数(465) | 所属类型(汇编作业)

[2012-06-21 23:39] 第15章 外中断

点击查看原图
15 - 第15章 外中断

1. 外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问。CPU通过端口来访问外部设备。

2. 外中断源有两类:
     (1) 可屏蔽中断, 由状态寄存器中的IF控制, IF=0则不响应可屏蔽中断
     (2) 不可屏蔽中断,中断类型码固定为2

3. 扫描码被送入端口60h. 

     按下键时产生的扫描码为通码,通码第7位为0
     松开键时产生的扫描码为断码,断码第7位为1

     断码=通码+80h

4. 端口60h收到扫描码时,会向CPU发出中断类型码为9的可屏蔽中断信息。


...
阅读全文 | 评论次数(1) | 浏览次数(489) | 所属类型(汇编作业)

[2012-06-16 23:53] 第14章 端口

点击查看原图
14 - 第14章 端口


检测点 14.1
========

(1)
     mov al, 2
     out 70h, al
     in al, 71h

(2)
     mov al, 2
     out 70h, al
     mov al, 0
     out 71h, al

检测点 14.2
========

编程,用加法和移位指令计算(ax)=(ax)*10

     ; 令ax初值为10
     mov ax, 10
     mov bx, ax
    
     shl ax, 1
   ...
阅读全文 | 评论次数(4) | 浏览次数(460) | 所属类型(汇编作业)

[2012-06-13 23:33] 第13章 int指令

点击查看原图
第13章 int指令

实验13
(1)
(2)
(3)

assume cs:code

code segment
     s1: db 'Good,better,best,', '$'
     s2: db 'Never let it rest,', '$'
     s3: db 'Till good is better,', '$'
     s4: db 'And bettter,best,', '$'
     s: dw offset s1, offset s2, offset s3, offset s4
     row: db 2, 4, 6...
阅读全文 | 评论次数(1) | 浏览次数(321) | 所属类型(汇编作业)

[2012-06-12 23:38] 第12章 内中断

点击查看原图
12 - 第12章 内中断

; 设置中断0, div溢出异常,屏幕显示 hello world!
assume cs:codesg

codesg segment

; ds:si -> es:di
start:
     mov ax, 0
     mov es, ax
     mov di, 0200h
    
     mov ax, cs
     mov ds, ax
     mov si, offset do_start

     mov cx, offset do_end - offset do_start
     cld
  ...
阅读全文 | 评论次数(2) | 浏览次数(438) | 所属类型(汇编作业)

[2012-06-12 23:38] 第11章 标志寄存器

11 - 第11章 标志寄存器

1. zf 零标志寄存器

     相关指令执行后,如果结果为0,则zf=1。否则zf=0。

2. pf 奇偶标志位

     相关指令执行后,其结果的所有bit中1的个数是否为偶数。如果为偶数,则pf=1。否则,pf=0。

3. sf 符号标志位

     相关指令执行后,其结果是否为负。如果结果为负,则sf=1。否则sf=0。

     当我们将数据当作有符号数来运算的时候,可以通过它来得知结果的正负。
     如果我们将数据当作无符号数来运算,sf的值则没有意义,虽然相关指令影响了它的值。

4. cf 进...
阅读全文 | 评论次数(1) | 浏览次数(291) | 所属类型(汇编作业)

[2012-06-12 23:36] 第10章 call和ret指令

点击查看原图
//博客的验证码终于好了。可以发文了。
//一篇文章只能配一张图片?

10 - 第10章 call和ret指令

1. ret修改ip,相当于:
          pop ip
    
     retf 修改ip和cs, 相当于:
          pop ip
          pop cs

2. call指令进行两步操作
     (1) 将当前的ip或cs和ip压入栈中
     (2) 转移

     call指令有四种类型:

     (1) 依据位移进行转移的call指令:call 标号

     "call 标号" 相当...
阅读全文 | 评论次数(5) | 浏览次数(375) | 所属类型(汇编作业)
『 查看更多文章 』