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

我的博客

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

[2015-05-19 23:01] 检测点 17.1

“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?
答:对的。
    在引发中断时都有IF=0的设置,引发int 16h也不例外。
    但在int 16h运行时,特别是在循环等待的空转期间,我们可从键盘输入字符,也就是引发了int 9这种可屏蔽中断,所以,int 16h中断例程中必定设置了IF=1。...
阅读全文 | 评论次数(0) | 浏览次数(486) | 所属类型(汇编作业)

[2015-05-19 22:43] 实验16  编写包含多个功能子程序和中断例程

初装一个新的int 7ch中断例程,为显示输出提供如下功能子程序。
 子程序名称:int 7ch
 任务:清屏、设置前景色、设置背景色、向上滚动一行
 入口参数:(ah)=0 功能为:
           清屏
           (ah)=1 功能为:
           设置前景色  (al)={0,1,2,3,4,5,6,7}
           (ah)=2 功能为:
           设置背景色  (al)={0,1,2,3,4,5,6,7}
           (ah)=3 功能为:
            向上滚动一行

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

[2015-05-17 13:49] 检测点 16.2

补全代码如下:
    mov ax,data
    mov es,ax...
阅读全文 | 评论次数(0) | 浏览次数(467) | 所属类型(汇编作业)

[2015-05-17 13:32] 检测点 16.1

下面的程序将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序。

为检测累加进位,对书中数据稍作改动。
assume cs:code
code segment
     a dw 0fff1h,0fff2h,0fff3h,0fff4h,0fff5h,0fff6h,0fff7h,0fff8h 
     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   ;补全...
阅读全文 | 评论次数(0) | 浏览次数(471) | 所属类型(汇编作业)

[2015-05-14 22:49] 实验15  安装新的int 9中断全程

;功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其它的键照常处理。
assume cs:code
code segment
 start: push cs
        pop ds
        mov ax,0
        mov es,ax
        mov si,offset int9
        mov di,204h
        mov cx,offset int9end - offset int9
        cld
        rep movsb
        push es:[4*9]
        pop es:[200h]
        push es:[4*9].2
        pop es:[200h]...
阅读全文 | 评论次数(0) | 浏览次数(507) | 所属类型(汇编作业)

[2015-05-12 22:50] 检测点 15.1

1.仔细分析一下上面的int9中断例程,看看是否可以精简一下?

    答:可以,对原int 9的模拟可精简为:
        pushf
        call dword ptr ds:[0]

    稍不留神会以为pushf也可以“精简”掉!因为引发了int 9,就意味着已经pushf了。但是,这个pushf却另有用处,它是为call dword ptr ds:[0]之后,程序进入原int 9中断例程返回时必然存在的iret指令作准备的。

    精简后标志寄存器入栈/出栈“轨迹”如下:
    pushf    ;主程序执行但引发int 9时,入栈由机器产生...
阅读全文 | 评论次数(0) | 浏览次数(487) | 所属类型(汇编作业)

[2015-05-11 00:21] 实验 14  访问CMOS RAM

编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。

assume cs:code
code segment
     address  : dw  9,8,7,4,2,0
     separator: db "// ::$"
start:
      mov bx,offset address
      mov si,offset separator
      mov di,12*160+70
      mov cl,4
      mov ax,0b800h
      mov es,ax

    s:mov ax,cs:[bx]
  ...
阅读全文 | 评论次数(1) | 浏览次数(757) | 所属类型(汇编作业)

[2015-05-10 18:07] 检测点14.2

编程,用加法和移位指令计算(ax)*10。
提示,(ax)*10=(ax)*2+(ax)*8

方法一
assume cs:code
code segment
start: sub dx,dx
       mov ax,0ffffh

       shl ax,1
       adc dx,0      ;(ax)*2
       push dx
       push ax       ;保存(ax)*2

       add ax,ax
       adc dx,dx      ;先算低位,使之可进位,然后算高位
       add ax,ax...
阅读全文 | 评论次数(0) | 浏览次数(489) | 所属类型(汇编作业)

[2015-05-10 12:01] 检测点14.1

1.编程,读取CMOS RAM的2号单元的内容。
mov al,2
out 70h,al  ;在地址端写入要访问的是2号单元
in al,71h   ;在数据端从2号单元读取数据

2.编程,向CMOS RAM的2号单元写放0。
mov al,2
out 70h,al  ;在地址端写入要访问的是2号单元
mov al,0
out 71h,al  ;在数据端向2号单元写入数据...
阅读全文 | 评论次数(0) | 浏览次数(465) | 所属类型(汇编作业)

[2015-05-09 18:27] 实验13 编写、应用中断例程

1、编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。
参数:(dh)=行号  (dl)=列号  (cl)=颜色  ds:si指向字符串首地址
(1)7ch中断例程
assume cs:code
code segment
start:  push ax
        push cx
        push ds
        push es
        push di
        push si
        mov ax,0
        mov es,ax
        mov di,200h
        mov ax,cs
        mov ds,ax
        mov si,offset _7ch
        mov cx,offse...
阅读全文 | 评论次数(0) | 浏览次数(449) | 所属类型(汇编作业)
『 查看更多文章 』