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

我的博客

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

[2009-04-12 22:05] 实验16 编写包含多个功能子程序的中断例程

安装一个新的int 7ch中断例程,为显示输出提供如下功能子程序。
(1)清屏;
(2)设置前景色;
(3)设置背景色;
(4)向上滚动一行。
入口参数说明:
(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行;
(2)对于2、3号功能,用al传送颜色值,(al)∈{0,1,2,3,4,5,6,7}。

因为之前有看到论坛上的帖子,还参考了一下他人的程序,基本了解写程序的问题所在,因为table中取sub1,sub2,sub3,sub4的值来自原来安装程序,如果直接将这些值放到0:200处,将发生错位!主要是处理标号问题!

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

[2009-04-12 18:29] 检测点16.X

检测点16.1

下面的程序将code段中a处的8个数累加,结果存储到了处的双字中,补全程序。
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[0],ax        ;不指明长度编译会警告,但b不是已经指明长度了吗为什么在这还可以再次指定长度
      adc word ptr b[2],0         ;而且...
阅读全文 | 评论次数(1) | 浏览次数(680) | 所属类型(汇编作业)

[2009-04-12 00:01] 实验15 安装新的int 9中断例程

安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”其他的键照常处理。
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,offset int9
      mo...
阅读全文 | 评论次数(3) | 浏览次数(643) | 所属类型(汇编作业)

[2009-04-11 23:21] 检测点15.1

(1)因为在进入中断例程后,IF和TF都已经设置0,没有必要再进行设置,对于程序段:
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call cword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]

(2)看看原来主程序有什么潜在问题,找到并修改。
  将原来的mov word ptr es:[9*4],offset int9
        mov es:[9*4+2]
  改成:cli     ;关闭可屏敝中断
         mov word ptr es...
阅读全文 | 评论次数(1) | 浏览次数(589) | 所属类型(汇编作业)

[2009-04-11 10:37] 实验14 访问CMOS RAM

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

assume cs:code
code segment

dat: db 9,8,7,4,2,0
 ;fh: '// ::'
 ;ot: 'yy/mm/dd hh/mm/ss'  这两种是在论坛上学习到的,觉得很好
start:mov ax,cs
      mov ds,ax
      mov si,offset dat
      mov di,160*12+36*2
      mov cx,6
    s:push cx
      mov al,[si]
      out 70h,a...
阅读全文 | 评论次数(2) | 浏览次数(483) | 所属类型(汇编作业)

[2009-04-11 10:35] 检测点14.X

检测点14.1

(1)编程,读取CMOS RAM的2号单元的内容。
mov al,2       
out 70h,al        ;告诉地址端口要访问的单元号(2)
in al,71h         ;从数据端口2号单元读取一个字节到al中

(2)向CMOS RAM的2号单元写入0。
mov al,2          
out 70h,al        ;告诉地址端口要访问的单元号(2)
mov al,0
out 71h,al        ;向2号单元写入0

检测点14.2
编程,用加法和移位指令计算(ax)=(ax)*10.
assume c...
阅读全文 | 评论次数(1) | 浏览次数(504) | 所属类型(汇编作业)

[2009-04-10 16:58] 实验13 编写、应用中断例程

(1)编写并安装int 7ch 中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。
  参数:(dh)=行号,(dl)=,(cl)=,ds:si指向字符串首地址。
  以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后CS、IP和栈中的状态。

assume cs:code
data segment
  db 'Welcome to masm!',0
data ends
code segment
start:mov dh,10
      mov dl,10
      mov cl,2

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

[2009-04-10 16:56] 检测点13.X

检测点13.1
(1) 在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7CH中断例程所能进行的最大转移位移是多少?

分析:上面用BX存放转移位移的偏移地址,而BX所能表示的最大值为FFFFH,所以我认为能进行的最大位移由BX决定,为FFFFH。转移位移的范围为-32768-32767,用补码表示。

(2)用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。

7ch中断全程如下:
                   jp:push bp
                    mov bp,sp
        ...
阅读全文 | 评论次数(1) | 浏览次数(527) | 所属类型(汇编作业)

[2009-04-08 20:11] 实验12 编写0号中断的处理程序

点击查看原图
在debug实验12的程序时,对于rep movsb 在debug中显示为
F3 REPZ
A4 MOSSB
暂时有些不解!但还是基本理解了中断过程,继续学习ing……!
assume cs:code
code segment
start:mov ax,cs
      mov ds,ax
      mov si,offset do0                   ;设置ds:si指向源地址
      mov ax,0
      mov es,ax
      mov di,200h                         ;设置es:di指向目的地址...
阅读全文 | 评论次数(1) | 浏览次数(497) | 所属类型(汇编作业)

[2009-04-07 17:16] 实验11 编写子程序

编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。
名称:letterc
功能:以0结尾的字符串中的小写字母转变成大写字母
参数:ds:si指向字符串首地址

assume cs:codesg
datasg segment
  db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
  begin:mov ax,datasg
        mov ds,ax
        mov si,0
        call l...
阅读全文 | 评论次数(1) | 浏览次数(490) | 所属类型(汇编作业)
页码数(5):  1  2  3  4  5