检测点13.1
(1)用7ch中断例程实现loop的功能,所能进行的最大转移位移是-32768~32767。这个位移范围是由bx的位数决定的。
(2)7ch中断例程的安装程序如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset mj
mov ax,0
mov es,ax
mov di,200h
cld
mov cx,offset mjend-offset mj
rep movsb
mov bx,7ch*4
mov es:[bx],word ptr 200h
mov es:[bx+2],byte ptr 0
mov ax,4c00h
int 21h
mj: push bp
mov bp,sp
add [bp+2],bx
pop bp
iret
mjend: nop
code ends
end start
汇编连接运行之后,再运行教材上提供的应用举例程序:
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-offset ok
int 7ch
ok: mov ax,4c00h
int 21h
code ends
end start
则能够实现在12行1列显示字符串“conversation!”。
检测点13.2
(1)不可以编程改变ffff:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。因为ffff:0处为ROM区,不可修改。
(2)int 19h中断例程,不可以由DOS提供。调用int 19h时,dos还未将它提供的中断例程装入内存。
- [游客] 感谢 11/15 22:10
- [游客] 把:DD 5937000,改成:DD 4294967295,你的错误,立刻就暴露出来。呵呵 05/19 18:30
- [游客] 计算人均时,是DD型除以DW型。把DD型的最大值代进去,你的程序,就溢出了。 05/19 18:28
- [游客] 注意不溢出的除法。 05/19 18:25
- [游客] 老师好啊~ 06/28 11:01
- [longphui] 谢谢 09/03 20:10
- [longphui] 谢谢 09/03 16:23
- [longphui] 谢谢 09/02 15:26
- [longphui] 谢谢 09/02 09:13
- [sissim] 恩恩,谢谢指正 01/11 18:24
- [even3] 亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下, 05/16 20:48
- [mcjfo] 楼主可以帮我解决这个问题吗?谢谢! 为什么它会跳过JMP DD 指令不执行啊 小弟搞了好久抖没 06/08 06:50