“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?
答:对的。
在引发中断时都有IF=0的设置,引发int 16h也不例外。
但在int 16h运行时,特别是在循环等待的空转期间,我们可从键盘输入字符,也就是引发了int 9这种可屏蔽中断,所以,int 16h中断例程中必定设置了IF=1。...
[2015-05-19 23:01] 检测点 17.1
阅读全文 |
评论次数(0) |
浏览次数(486) |
所属类型(汇编作业)
[2015-05-19 22:43] 实验16 编写包含多个功能子程序和中断例程
初装一个新的int 7ch中断例程,为显示输出提供如下功能子程序。
子程序名称:int 7ch
任务:清屏、设置前景色、设置背景色、向上滚动一行
入口参数:(ah)=0 功能为:
清屏
(ah)=1 功能为:
设置前景色 (al)={0,1,2,3,4,5,6,7}
(ah)=2 功能为:
设置背景色 (al)={0,1,2,3,4,5,6,7}
(ah)=3 功能为:
向上滚动一行
assume cs:...
子程序名称:int 7ch
任务:清屏、设置前景色、设置背景色、向上滚动一行
入口参数:(ah)=0 功能为:
清屏
(ah)=1 功能为:
设置前景色 (al)={0,1,2,3,4,5,6,7}
(ah)=2 功能为:
设置背景色 (al)={0,1,2,3,4,5,6,7}
(ah)=3 功能为:
向上滚动一行
assume cs:...
阅读全文 |
评论次数(0) |
浏览次数(469) |
所属类型(汇编作业)
[2015-05-17 13:49] 检测点 16.2
补全代码如下:
mov ax,data
mov es,ax...
mov ax,data
mov es,ax...
阅读全文 |
评论次数(0) |
浏览次数(467) |
所属类型(汇编作业)
[2015-05-17 13:32] 检测点 16.1
下面的程序将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序。
为检测累加进位,对书中数据稍作改动。
assume cs:code
code segment
a dw 0fff1h,0fff2h,0fff3h,0fff4h,0fff5h,0fff6h,0fff7h,0fff8h
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 ;补全...
为检测累加进位,对书中数据稍作改动。
assume cs:code
code segment
a dw 0fff1h,0fff2h,0fff3h,0fff4h,0fff5h,0fff6h,0fff7h,0fff8h
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 ;补全...
阅读全文 |
评论次数(0) |
浏览次数(471) |
所属类型(汇编作业)
[2015-05-14 22:49] 实验15 安装新的int 9中断全程
;功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其它的键照常处理。
assume cs:code
code segment
start: push cs
pop ds
mov ax,0
mov es,ax
mov si,offset int9
mov di,204h
mov cx,offset int9end - offset int9
cld
rep movsb
push es:[4*9]
pop es:[200h]
push es:[4*9].2
pop es:[200h]...
assume cs:code
code segment
start: push cs
pop ds
mov ax,0
mov es,ax
mov si,offset int9
mov di,204h
mov cx,offset int9end - offset int9
cld
rep movsb
push es:[4*9]
pop es:[200h]
push es:[4*9].2
pop es:[200h]...
阅读全文 |
评论次数(0) |
浏览次数(507) |
所属类型(汇编作业)
[2015-05-12 22:50] 检测点 15.1
1.仔细分析一下上面的int9中断例程,看看是否可以精简一下?
答:可以,对原int 9的模拟可精简为:
pushf
call dword ptr ds:[0]
稍不留神会以为pushf也可以“精简”掉!因为引发了int 9,就意味着已经pushf了。但是,这个pushf却另有用处,它是为call dword ptr ds:[0]之后,程序进入原int 9中断例程返回时必然存在的iret指令作准备的。
精简后标志寄存器入栈/出栈“轨迹”如下:
pushf ;主程序执行但引发int 9时,入栈由机器产生...
答:可以,对原int 9的模拟可精简为:
pushf
call dword ptr ds:[0]
稍不留神会以为pushf也可以“精简”掉!因为引发了int 9,就意味着已经pushf了。但是,这个pushf却另有用处,它是为call dword ptr ds:[0]之后,程序进入原int 9中断例程返回时必然存在的iret指令作准备的。
精简后标志寄存器入栈/出栈“轨迹”如下:
pushf ;主程序执行但引发int 9时,入栈由机器产生...
阅读全文 |
评论次数(0) |
浏览次数(487) |
所属类型(汇编作业)
[2015-05-11 00:21] 实验 14 访问CMOS RAM
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。
assume cs:code
code segment
address : dw 9,8,7,4,2,0
separator: db "// ::$"
start:
mov bx,offset address
mov si,offset separator
mov di,12*160+70
mov cl,4
mov ax,0b800h
mov es,ax
s:mov ax,cs:[bx]
...
assume cs:code
code segment
address : dw 9,8,7,4,2,0
separator: db "// ::$"
start:
mov bx,offset address
mov si,offset separator
mov di,12*160+70
mov cl,4
mov ax,0b800h
mov es,ax
s:mov ax,cs:[bx]
...
阅读全文 |
评论次数(1) |
浏览次数(757) |
所属类型(汇编作业)
[2015-05-10 18:07] 检测点14.2
编程,用加法和移位指令计算(ax)*10。
提示,(ax)*10=(ax)*2+(ax)*8
方法一
assume cs:code
code segment
start: sub dx,dx
mov ax,0ffffh
shl ax,1
adc dx,0 ;(ax)*2
push dx
push ax ;保存(ax)*2
add ax,ax
adc dx,dx ;先算低位,使之可进位,然后算高位
add ax,ax...
提示,(ax)*10=(ax)*2+(ax)*8
方法一
assume cs:code
code segment
start: sub dx,dx
mov ax,0ffffh
shl ax,1
adc dx,0 ;(ax)*2
push dx
push ax ;保存(ax)*2
add ax,ax
adc dx,dx ;先算低位,使之可进位,然后算高位
add ax,ax...
阅读全文 |
评论次数(0) |
浏览次数(489) |
所属类型(汇编作业)
[2015-05-10 12:01] 检测点14.1
1.编程,读取CMOS RAM的2号单元的内容。
mov al,2
out 70h,al ;在地址端写入要访问的是2号单元
in al,71h ;在数据端从2号单元读取数据
2.编程,向CMOS RAM的2号单元写放0。
mov al,2
out 70h,al ;在地址端写入要访问的是2号单元
mov al,0
out 71h,al ;在数据端向2号单元写入数据...
mov al,2
out 70h,al ;在地址端写入要访问的是2号单元
in al,71h ;在数据端从2号单元读取数据
2.编程,向CMOS RAM的2号单元写放0。
mov al,2
out 70h,al ;在地址端写入要访问的是2号单元
mov al,0
out 71h,al ;在数据端向2号单元写入数据...
阅读全文 |
评论次数(0) |
浏览次数(465) |
所属类型(汇编作业)
[2015-05-09 18:27] 实验13 编写、应用中断例程
1、编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。
参数:(dh)=行号 (dl)=列号 (cl)=颜色 ds:si指向字符串首地址
(1)7ch中断例程
assume cs:code
code segment
start: push ax
push cx
push ds
push es
push di
push si
mov ax,0
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset _7ch
mov cx,offse...
参数:(dh)=行号 (dl)=列号 (cl)=颜色 ds:si指向字符串首地址
(1)7ch中断例程
assume cs:code
code segment
start: push ax
push cx
push ds
push es
push di
push si
mov ax,0
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset _7ch
mov cx,offse...
阅读全文 |
评论次数(0) |
浏览次数(449) |
所属类型(汇编作业)
『 查看更多文章 』