检测点13·1
(1)在上面的内容中,我4f]91 7ch中断例程实现loop的功能,则上面的7ch中断例
程所能进行的最大转移位移是多少?
答:32767~(-32768)
(2)用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。
assume cs:code
data segment
db "conversation",0
data ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,aX
mov di,12*160
s:cmp byte ptr [si],0
je ok
mov al,[si]
mov es:[di],al
inc si
add di,2
mov bx,offset s-0ffset ok
int 7ch
ok:mov ax,4c00h
int 21h
code ends
end start
答:
assume cs:code
data segment
db 'welcome to masm!',0
data ends
stack segment
db 32 dup (0)
stack ends
code segment
start:mov ax,0
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset d_s
mov cx,d_end-d_s
cld
repz movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,0b872h
mov es,ax
mov ax,data
mov ds,ax
xor di,di
xor si,si
mov cx,16
mov bx,offset s-s_end
s:mov al,[si]
mov ah,2
mov es:[di],ax
mov ah,24h
mov es:[di+160],ax
mov ah,71h
mov es:[di+320],ax
add di,2
inc si
int 7ch
s_end:mov ax,700h
int 21h
mov ax,4c00h
int 21h
d_s:mov bp,sp
sub cx,1
jz qret
add [bp],bx
qret:iret
d_end:nop
code ends
end start
检测点13·2
(1)我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检
测和初始化程序。
答:这句话是错误的,因为FFFF:0处是只读存储器ROM,是不可写的。
(2)int 19h中断例程,可以由DOS提供。
答:不可以,因为BIOS的中断向量是固化在ROM中的,而且在BIOS完成硬件自检和相关初始化时需要调用int 19h号中断来进行操作系统引导,如果由DOS来提供的话,就进不了DOS,因为DOS还没有加载,调用不了它。
实验 13
实验1 3编写、应用中断例程
(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 ax,0
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset s7
mov cx,offset s8-offset s7
cld
repz movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7Ch
mov ax,4C00h
int 21h
s7:mov al,160
mul dh
mov bx,ax
mov al,2
mul dl
add bx,ax
mov ax,0b800h
mov es,ax
mov al,cl
mov ch,0
s_1:mov cl,[si]
jcxz ok_0
mov es:[bx],cl
mov es:[bx+1],al
add bx,2
inc si
jmp s_1
ok_0:iret
s8:nop
code ends
end start
(2)编写并安装int 7ch中断例程,功能为完成loop指令的功能。
参数:(cx)=循环次数,(bx)=位移。
以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令
执行前后CS、IP和栈中的状态。
在屏幕中间显示80个‘!’。
assume cs:code
code segment
start:xor ax,ax
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset s7
mov cx,offset s8-offset s7
cld
repz movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s-offset se
mov CX,80
s: mov byte ptr es:[di],'!'
add di,2
int 7ch
se:nop
mov ax,700h
int 21h
mov ax,4c00h
int 21h
s7:mov bp,sp
sub cx,1
jz r_et
add [bp],bx
r_et:iret
s8:nop
code ends
end start
(3)下面的程序,分别在屏幕的第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 ds,ax
mov bx,offset s
mov si,offset row
mov cx,4
ok:mov bh,0
mov dh,[si]
mov dl,0
mov ah,2
int 10h
mov dx,[bx]
mov ah,9
int 21h
inc si
add bx,2
loop ok
mov ax,4c00h
int 21h
code ends
end start
完成后编译运行,体会其中的编程思想。
- [kanwangxue] 感觉楼主很乖的。有点孩子气。呵呵。 01/27 08:58
- [kanwangxue] it界,进去干嘛啊,到时候自己牛比了,首先写一个自己的语言,自己用。进入IT界不就是随波做流吗/?他 01/27 08:57
- [kanwangxue] 哥们,不要为了赚钱而学计算机。 计算机是年轻时候干的, 30岁后可以开始想赚钱,年轻嘛,不要这么悲 01/27 08:50
- [游客] 怎么说? 01/26 16:22
- [游客] 你这不行啊,差远了! 01/10 22:29
- [chinatree] 谢谢你。相信你也会成功的。 01/09 14:22
- [landyking] 哥们儿,好久不见。相信你会成功的。 12/02 23:34
- [chinatree] 哇哇,被挖坟了。莫生气,只是感觉谦虚些好,就算你的程序真的是史上最强的,也别说出来嘛,自己偷着乐就行 11/20 00:41
- [xiaoyao2012] 你的程序和我的程序比较也不见得你的程序又节约空间,在某种意义上说你的程序用了没学的指令,所以不见得你 11/19 15:39
- [heliang6291] 一起加油啊 07/02 02:45
- [游客] 急需一个汇编程序大作业。。。。。。。。。。。。。。。。。。。??? 12/28 16:50
- [游客] 这么多人喜欢你,我嫉妒了。但你不可以喜欢那么多,允许你在我不需要你的时候帮别人。如果我需要立叫立到。 11/13 13:11
- [tily] 兄弟 我来看你啦 呵呵 最近可好呀 09/26 22:17
- [stqcw] 能加我qq吗?1270911891 我在做课程设计2的时候 遇到点问题 09/24 09:16
- [stqcw] 能加我qq吗?1270911891 我的环境还是有点问题。按下A的时候不能显示满屏的A 09/20 09:36
- [stqcw] 牛人 我在xp里面运行王爽 汇编第二版 p280的例子 按下esc键没反应 呀 怎样在虚拟机里配置一 09/17 15:18
- [landyking] 呵呵,交个朋友,共同学习. 09/08 00:03
- [luyingdzx] 能知道你的QQ吗?或者请加一下我的QQ271190440,可以吗 虽然在论坛能获得解答,但是有的问 08/07 21:32