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

我的博客

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

[2012-05-30 18:32] 17章作业和实验17(已验证)

第十七章

检测点17.1 

“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?

正确,当键盘缓冲区为空时,如果设置IF=0,int 9中断无法执行,循环等待会死锁。


以下也实验17的源码。
以经过验证。
验证方法为。
在虚拟机环境,配有虚拟软驱。

1.安装中断例程
2.运行写软盘程序,将屏幕数据写到软盘
3.清屏
4.运行读软盘程序,将软盘数据读到屏幕。


assume cs:CG
;名称:int 7ch读写磁盘中断
;
;入口参数:ah=功能号(0:读,1:写)
;      al=驱动器号
;      ...
阅读全文 | 评论次数(1) | 浏览次数(896) | 所属类型(汇编作业)

[2012-05-23 23:48] 实验16「优化」

assume cs:code

code segment
;名称:7ch中断例程(setscreen)安装程序
;
;功能:
;(1) 设置前景色;
;(2) 设置背景色;
;(3) 向上滚动,或清屏
;
;参数:用ah寄存器传递功能号:
;0 表示设置前景色;
;1 表示设置背景色;2 向上滚动,或清屏
;
;对于0、1号功能,用al传送颜色,
;al∈{0,1,2,3,4,5,6,7}
;
;对于2号功能:dx存放滚动行数
;dx∈{0~24},当dx=0时,为清屏
;dx最大为24,即向上滚动24行,否则设置0,清屏

setld:jmp sho...
阅读全文 | 评论次数(8) | 浏览次数(856) | 所属类型(汇编作业)

[2012-05-23 23:45] 实验16「扩展」

assume cs:code

code segment
;名称:7ch中断例程(setscreen)安装程序
;
;功能:
;(1) 清屏;
;(2) 设置前景色;
;(3) 设置背景色;
;(4) 向上滚动
;
;参数:用ah寄存器传递功能号:
;0 表示清屏;1 表示设置前景色;
;2 表示设置背景色;3 向上滚动
;
;对于1、2号功能,用al传送颜色,
;al∈{0,1,2,3,4,5,6,7}
;
;对3号功能:dx存放滚动行数
;dx∈{1~24}

setld:jmp short set

  table  dw sub1,sub2...
阅读全文 | 评论次数(3) | 浏览次数(848) | 所属类型(汇编作业)

[2012-05-23 23:41] 第16章作业

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

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 a[16],ax
 adc word ptr b[2],0
 add si,2
 loop s
 mov ax,4c00h
 int 21h
code ends
end start

检测点16.2 
下面的程序将data段中a处的8个数值累加,结果...
阅读全文 | 评论次数(1) | 浏览次数(808) | 所属类型(汇编作业)

[2012-05-18 22:18] 实验十五

点击查看原图
我有一个疑问,就是为什么换成大括号里面的内容后,就不行呢?
我感觉,一样的啊。。。。。。


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
   
   xor ax,ax
   mov es,ax
   
   mov si,offset int9
   mov di,204h
   mov cx,o...
阅读全文 | 评论次数(2) | 浏览次数(286) | 所属类型(汇编作业)

[2012-05-18 22:17] 第15章作业

第十五章
检测点15.1
(1) 仔细分析一下书中的in9中断例程,看看是否可以精简一下?
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已置0,没有必要再进行设置了,对于程序段:
 pushf    ;标志寄存器入栈
 pushf
 pop bx
 and bh,11111100b  ;IF和TF为flag的第9位和第8位
 push bx
 popf ;TF=0,IF=0
 call dword ptr ds:[0] ;CS、IP入栈;(IP)=ds:[0],(CS)=ds:[2]

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

[2012-05-15 18:02] 实验十四(扩展)

点击查看原图
assume cs:code

code segment

 db 32h,9,8,7,4,2,0,0,"// ::",0   ;设置端口单元号和字符

start:mov ax,cs
     mov ds,ax
  mov ax,0b800h
  mov es,ax
s:  xor bx,bx
  mov di,13*160+2*28
  mov cx,7                 ;初始化各寄存器
  
time:push cx
  mov al,[bx]
  out 70h,al
  in al,71h
  mov ah,al
  mov c...
阅读全文 | 评论次数(9) | 浏览次数(256) | 所属类型(汇编作业)

[2012-05-10 19:47] 实验14(动态)

点击查看原图
assume cs:code

data segment
  db "// :: "                    ;设置符号
  db 9,8,7,4,2,0                 ;设置端口单元号
data ends

code segment

start:mov ax,data
     mov ds,ax
  mov si,0
  mov ax,0b800h
  mov es,ax
  mov di,13*160+2*30
  mov cx,6                    ;初始化各寄存器
  
time:push cx ...
阅读全文 | 评论次数(7) | 浏览次数(669) | 所属类型(汇编作业)

[2012-05-10 19:45] 第十四章作业

第十四章

检测点14.1 读取写入CMOS RAM单元内容
(1)编程,读取CMOS RAM的2号单元内容。 

assume cs:code 
code segment 
start:  mov al,2        ;赋值al 
        out 70h,al      ;将al送入端口70h 
        in al,71h       ;从端口71h处读出单元内容 
        mov ax,4c00h 
        int 21h 
code ends 
end start

(2)编程,向CMOS RAM的2号单元写入0。 
...
阅读全文 | 评论次数(1) | 浏览次数(268) | 所属类型(汇编作业)

[2012-05-06 21:04] 实验十三(三)

点击查看原图
分别在屏幕的第2、4、6、8行显示4句英文诗,补全代码。

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 better,best.','$'
  s : dw offset s1,offset s2,offset s3,offset s4
  row: db 2,4,6,8
  
start:mov ax,cs
     mov ...
阅读全文 | 评论次数(1) | 浏览次数(252) | 所属类型(汇编作业)
页码数(4):  1  2  3  4