“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?
对的,因为int 16h中断例程要检测键盘缓冲区中是否有数据,如果IF=0,那就会屏蔽了int 9中断例程...


- [tomato] Right! 05/19 18:26
- [游客] 前两个功能测试没问题,但是,后两个功能出现问题。设置背景色发现没变化,而上滚一行的调用会出现错误提示 04/29 09:58
- [qn80] 太粗心了。 04/28 10:16
- [游客] 怎么是24H呢?不是只给了10个16位的栈吗。 04/28 10:11
- [wsrf] 程序还有问题,不能通过编译,学习得认真对待。 04/27 16:31
- [qn80] 汗!太粗心了 mov ax,data mov es,ax 04/25 22:39
- [游客] 回答OK。 04/24 20:32
- [游客] 回答的不对。看仔细,data段是与那个寄存器关联的。 04/24 20:30
- [游客] 程序OK。 04/24 19:58
- [younggay] 理解OK。 04/24 11:10
[2009-04-29 11:07] 检测点17.1
阅读全文 |
评论次数(1) |
浏览次数(606) |
所属类型(汇编作业)
[2009-04-27 11:25] 实验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]
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offse...
安装一个新的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]
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offse...
阅读全文 |
评论次数(3) |
浏览次数(763) |
所属类型(汇编作业)
[2009-04-24 11:17] 检测点16.2
下面的程序将data段中a处的8个数据累加,结果存储到b处的字中。补全程序。
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov cx,8
s: mov al,a[si]
mov ah,0
add b,ax
inc si
loop s...
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov cx,8
s: mov al,a[si]
mov ah,0
add b,ax
inc si
loop s...
阅读全文 |
评论次数(2) |
浏览次数(718) |
所属类型(汇编作业)
[2009-04-24 10:49] 检测点16.1
检测点16.1
下面和程序将code段中a处的8个数据累加,结果存储到b处的dword中,补全程序.
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,ax
adc word ptr b+2,0
add si,2
loop s
...
下面和程序将code段中a处的8个数据累加,结果存储到b处的dword中,补全程序.
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,ax
adc word ptr b+2,0
add si,2
loop s
...
阅读全文 |
评论次数(1) |
浏览次数(667) |
所属类型(汇编作业)
[2009-04-22 15:06] 试验15
基本照抄课本,嘻嘻!
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
mov di,204h
mov cx...
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
mov di,204h
mov cx...
阅读全文 |
评论次数(1) |
浏览次数(492) |
所属类型(汇编作业)
[2009-04-22 10:34] 检测点15.1
1.仔细分析一下int9中断例程,看看是否可以精简一下?
pushf
pushf
pop ax
and ah,11111100h
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令
2.仔细分析上面的程序中的主程序,看看有什么潜在的问题?
在主程序中,如果在执行设置int9中断例程的段地址和偏移地址的指令之间发生了键盘中断,则CPU将转去一个错误的地址执行,将发生错误。找出这样的程序段,改写它们,排除潜在的问题。
assume cs:code
st...
pushf
pushf
pop ax
and ah,11111100h
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令
2.仔细分析上面的程序中的主程序,看看有什么潜在的问题?
在主程序中,如果在执行设置int9中断例程的段地址和偏移地址的指令之间发生了键盘中断,则CPU将转去一个错误的地址执行,将发生错误。找出这样的程序段,改写它们,排除潜在的问题。
assume cs:code
st...
阅读全文 |
评论次数(1) |
浏览次数(742) |
所属类型(汇编作业)
[2009-04-18 16:38] 实验 14
编程:以"年/月/日 时:分:秒"的格式,显示当前的日期,时间
assume cs:code
code segment
num: db 9,8,7,4,2,0
des: db '/','/',' ',':',':',' '
start: mov cx,6
mov bx,offset num
mov si,offset des
mov di,0
start1: push cx
mov al,cs:[bx]; 端口号送到al
mov dl,cs:[si]
...
assume cs:code
code segment
num: db 9,8,7,4,2,0
des: db '/','/',' ',':',':',' '
start: mov cx,6
mov bx,offset num
mov si,offset des
mov di,0
start1: push cx
mov al,cs:[bx]; 端口号送到al
mov dl,cs:[si]
...
阅读全文 |
评论次数(1) |
浏览次数(715) |
所属类型(汇编作业)
[2009-04-17 10:42] 检测点14.2
编程:用加法和移位指令计算(ax)=(ax)*10
assume cs:code
code segment
mov ax,29h
mov cl,5 ;左移一位相当ax*2
shl ax,cl
mov ax,4c00h
int 21
code ends
end...
assume cs:code
code segment
mov ax,29h
mov cl,5 ;左移一位相当ax*2
shl ax,cl
mov ax,4c00h
int 21
code ends
end...
阅读全文 |
评论次数(2) |
浏览次数(485) |
所属类型(汇编作业)
[2009-04-17 10:17] 检测点14.1
1.编程:读取CMOS RAM的2号单元内容。
assume cs:code
code segment
mov al,2
out 70h,al
in al,71h
mov ax,4c00h
int 21
code ends
end
2.编程:向CMOS RAM的2号单元写入0
assume cs:code
code segment
mov al,2
out 70h,al
mov al,0
out 71h,al
mov ax,4c00h
int 21
code...
assume cs:code
code segment
mov al,2
out 70h,al
in al,71h
mov ax,4c00h
int 21
code ends
end
2.编程:向CMOS RAM的2号单元写入0
assume cs:code
code segment
mov al,2
out 70h,al
mov al,0
out 71h,al
mov ax,4c00h
int 21
code...
阅读全文 |
评论次数(1) |
浏览次数(449) |
所属类型(汇编作业)
[2009-04-15 11:46] 实验13-3
3.下面的程序,分别在屏幕的第2、4、6、8行显示四句英文诗,补全程序。
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
sta...
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
sta...
阅读全文 |
评论次数(1) |
浏览次数(432) |
所属类型(汇编作业)
『 查看更多文章 』