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

我的博客

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

[2007-11-20 11:24] 课程设计2

代码已经在虚拟机Bochs和VirtualPC2007中测试过了,但是不知道是什么原因,在Bochs虚拟机中,ResetPC就是跳转到0FFFFH:0H无法顺利执行,改成0F000H:0FFF0H也无法顺利执行。而在VirtualPC中却可以顺利执行的。
由于代码超过了512字节,需要2个扇区,所以第一个扇区的作用是读取第2、3个扇区到指定内存处,然后跳转去执行。

代码如下:

assume cs:code

code segment
org 0h
myos:
;Now CS:IP = 0:7c00h
    xor ax,ax
    mov ds,ax
    ...
阅读全文 | 评论次数(6) | 浏览次数(924) | 所属类型(汇编作业)

[2007-11-14 08:54] 检测点17.1

在int 16h中断例程中,程序要监视键盘缓冲区中是否有数据,在此期间,必须允许数据写入到缓冲区中,而这是int 9中断的功能,所以在int 16h中断例程中肯定有'sti'指令设置IF=1从而使CPU在int 16h中断时可以处理int 9这个可屏蔽中断。...
阅读全文 | 评论次数(2) | 浏览次数(805) | 所属类型(汇编作业)

[2007-11-14 08:49] 实验16 编写包含多个子程序的中断

assume cs:code,ss:stack

stack segment
    db 32 dup (0)
stack ends

code segment
start:
    mov ax,stack
    mov ss,ax
    mov sp,32

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

[2007-11-13 10:19] 检测点16.2

填空中应该填入:
mov ax,data
mov es,ax

由于在assume伪指令中有"es:data",而且在汇编后可以发现传输指令的段前缀为es,故需要将data段的段地址传给es寄存器。...
阅读全文 | 评论次数(1) | 浏览次数(645) | 所属类型(汇编作业)

[2007-11-13 10:11] 检测点16.1

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]
    add word ptr b,ax
    adc word ptr b[2],0
    add si,2
    loop s

    mov ax,4c00h
    int 21h
code ends
end start...
阅读全文 | 评论次数(2) | 浏览次数(545) | 所属类型(汇编作业)

[2007-11-13 09:55] 实验15 安装新的int9中断

点击查看原图
代码如下:
;Install new int9 interuppt

assume cs:code,ss:stack

stack segment
    db 64 dup (0)
stack ends

code segment
start:
    mov ax,stack
    mov ss,ax
    mov sp,64

    mov ax,0
    mov es,ax
    mov di,204h

    mov ax,cs
    mov ds,ax
    mov si,offset int9

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

[2007-11-12 15:34] 检测点15.1

1、程序可以精简为
pushf
call dword ptr ds:[0]

2、
程序有两处设置int9中断例程的段地址和偏移地址,分别是在将int9中断例程设置为自己编写的中断例程和程序最后恢复原来的int9中断例程。为了防止在设置段地址和偏移地址指令间时发生键盘输入,产生错误,需要在设置前将IF标志位清0,设置完成后设为1就可以了。
程序改写如下:

assume cs:code

stack segment
    db 128 dup (0)
stack ends

data segment
    dw 0,0
data ends

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

[2007-11-12 14:17] 实验14 访问CMOS RAM

点击查看原图
代码如下:
;Display date and time

assume cs:code

code segment
    db "20??/??/?? ??:??:??",'$'
portno:
    db 9,8,7,4,2,0
storpos:
    dw 2,5,8,11,14,17
start:
    mov ax,cs
    mov ds,ax       ;prepare ds for display string
    mov si,offset portno
    mov di,offset storpos

    mov c...
阅读全文 | 评论次数(2) | 浏览次数(752) | 所属类型(汇编作业)

[2007-11-12 09:11] 检测点14.2

shl ax,1
mov bx,ax   ;(bx)=(ax)*2
mov cl,2
shl ax,cl   ;(ax)=(原来ax)*8
add ax,bx...
阅读全文 | 评论次数(2) | 浏览次数(664) | 所属类型(汇编作业)

[2007-11-12 09:05] 检测点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...
阅读全文 | 评论次数(1) | 浏览次数(577) | 所属类型(汇编作业)
『 查看更多文章 』