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

我的博客

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

[2010-03-15 10:57] 检测点17.1

正确,因为int 16h检查键盘缓冲区是否有数据,若无数据,则循环等待。如果不允许中断,则无法处理键盘输入,从而形成死循环。...
阅读全文 | 评论次数(0) | 浏览次数(1271) | 所属类型(汇编作业)

[2010-03-15 09:42] 实验16改进

学习了同学们的程序,发现了更好的方法。自己总是跳不出框框,思维定势。怎么办?

上一个程序,将子程序的偏移地址定义为dw sub1-(int7c-start)+200h。

1.将中断例程放在安装程序start之前,就可以在偏移量中去掉复制指令那段代码占用的字节,变成dw sub1+200h。

2.将中断例程入口地址设置为0020:0000,就可以解决总是以0为基础地址的问题,变成dw sub1。

修改后程序如下:
        assume  cs:code
code    segment

int7c:  jmp     short set
table   ...
阅读全文 | 评论次数(0) | 浏览次数(1146) | 所属类型(汇编作业)

[2010-03-12 21:12] 实验16

安装7ch中断的程序如下:
        assume  cs:code
code    segment
start:  mov     ax,0
        mov     es,ax
        mov     di,200h
        mov     ax,code
        mov     ds,ax
        mov     si,offset int7c
        mov     cx,offset int7ce-offset int7c
        cld
        rep     movsb

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

[2010-03-12 20:36] 检测点16.2 关于assume的进一步认识

程序如下:
        assume  cs:code,es:data
data    segment
a       dw      1,2,3,4,5,6,7,8
b       dd      0
data    ends
code    segment
start:  mov     ax,data
        mov     es,ax
        mov     si,0
        mov     cx,8
s:      mov     ax,a[si]
        add     word ptr b,ax
        adc...
阅读全文 | 评论次数(0) | 浏览次数(1139) | 所属类型(汇编作业)

[2010-03-12 19:09] 检测点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,4c0...
阅读全文 | 评论次数(0) | 浏览次数(1152) | 所属类型(汇编作业)

[2010-03-12 17:33] 实验15

程序如下:
        assume  cs:code

stack   segment
        db      128 dup(0)
stack   ends

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

        push    cs
        pop     ds

        mov     ax,0
        mov     es,ax

        mov     si,offse...
阅读全文 | 评论次数(0) | 浏览次数(1258) | 所属类型(汇编作业)

[2010-02-18 17:18] 检测点15.1

(1)可以精简为
pushf
call dword ptr ds:[0]

(2)
将程序中修改int 9中断例程的入口地址的程序段前面加上cli,修改完毕后再恢复即可。
有两段程序修改中断例程的入口地址:
pushf
cli
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
popf


pushf
cli
push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]
popf...
阅读全文 | 评论次数(0) | 浏览次数(1167) | 所属类型(汇编作业)

[2010-02-16 17:24] 实验14

借用了实验13第三题对行数处理的思路,这里也把地址存到内存里面,利用循环依此取出数据并处理,保存为字符串,用int 10h的2号子程序和9号dos功能调用定位光标和显示字符串。

        assume  cs:code
data    segment
str     db      '**/**/** **:**:**$'
adr     db      9,8,7,4,2,0
code    segment
start:  mov     ax,data
        mov     ds,ax
        mov     si,offset str
   ...
阅读全文 | 评论次数(0) | 浏览次数(1171) | 所属类型(汇编作业)

[2010-02-16 15:39] 检测点14.2

程序如下:
        assume  cs:code
code    segment
start:  mov     ax,1234h
        mov     bx,ax
        shl     bx,1
        mov     cl,3
        shl     ax,cl
        add     ax,bx
        mov     ax,4c00h
        int     21h
code    ends
        end     start
调试如下:
D:\masm>debug ce14_2....
阅读全文 | 评论次数(0) | 浏览次数(1176) | 所属类型(汇编作业)

[2010-02-16 15:21] 检测点14.1

(1)读取CMOS RAM的2号单元的内容。
首先在debug中用a命令将指令写入内存,用t命令执行。
D:\masm>debug
-a
0B00:0100 mov al,2
0B00:0102 out 70,al
0B00:0104 in al,71
0B00:0106
-t

AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B00  ES=0B00  SS=0B00  CS=0B00  IP=0102   NV UP EI PL NZ NA PO NC
0B00:0...
阅读全文 | 评论次数(0) | 浏览次数(1162) | 所属类型(汇编作业)
页码数(5):  1  2  3  4  5