(1)
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令
解析:
因为,在int 9中断例程执行前,
硬件系统已经完成了3步工作
1、键盘产生扫描码
2、扫描码送入60h端口
3、引发9号中断
在第3步就要修改IF=0,TF=0
(2)
push es:[9*4]
pop ds:[0]
pus...

[2009-06-11 21:48] 检测点15.1
阅读全文 |
评论次数(2) |
浏览次数(375) |
所属类型(默认类型)
[2009-06-11 21:47] 检测点16.2
assume cs:code,ds: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
;前2句所填。获取数据段中的段地址,以便代码段中使用
mov si,0
mov cx,8
s: mov al,a[si]
mov ah,0
add b,ax
inc si
loop s ...
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
;前2句所填。获取数据段中的段地址,以便代码段中使用
mov si,0
mov cx,8
s: mov al,a[si]
mov ah,0
add b,ax
inc si
loop s ...
阅读全文 |
评论次数(1) |
浏览次数(367) |
所属类型(默认类型)
[2009-06-11 21:40] 检测点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,...
完整程序如下:
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,...
阅读全文 |
评论次数(1) |
浏览次数(352) |
所属类型(默认类型)
[2009-06-11 21:34] 检测点14.1 14.2
(1)编程 ,读取CMOS RAM 2号单元内容
(2)编程,像CMOS 2号单元写入0
assume cs:code
code segment
start:mov al,2
out 70H,al
in al,71h
mov ax,4c00H
int 21h
code ends
end start
(2)assume cs:code
code segment
start:mov al,2
out 70H,al...
(2)编程,像CMOS 2号单元写入0
assume cs:code
code segment
start:mov al,2
out 70H,al
in al,71h
mov ax,4c00H
int 21h
code ends
end start
(2)assume cs:code
code segment
start:mov al,2
out 70H,al...
阅读全文 |
评论次数(1) |
浏览次数(376) |
所属类型(默认类型)
[2009-06-10 21:23] 检测点 14.1 14.2
检测点14.1
(1)编程 ,读取CMOS RAM 2号单元内容
(2)编程,像CMOS 2号单元写入0
assume cs:code
code segment
start:mov al,2
out 70H,al
in al,71h
mov ax,4c00H
int 21h
code ends
end start
(2)assume cs:code
code segment
start:mov al,2
out 70H,al
...
(1)编程 ,读取CMOS RAM 2号单元内容
(2)编程,像CMOS 2号单元写入0
assume cs:code
code segment
start:mov al,2
out 70H,al
in al,71h
mov ax,4c00H
int 21h
code ends
end start
(2)assume cs:code
code segment
start:mov al,2
out 70H,al
...
阅读全文 |
评论次数(1) |
浏览次数(371) |
所属类型(默认类型)
[2009-06-10 21:20] 检测点6.1
(1)
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax ;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
...
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax ;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
...
阅读全文 |
评论次数(1) |
浏览次数(342) |
所属类型(默认类型)
[2009-06-09 10:02] 检测点 13.1 13.2
检测点 13.1
(1) 答:上面的7CH中断例程所能进行的最大转移位移为 FFFF。
理由:1.循环所依据的偏移地址是靠寄存器来实现的,寄存器的范围最大也只有FFFF
理由:2.7CH 的例子仅仅靠修改IP而非cS可见其绝对不是远转移,所以范围在FFFF内
(2) 用7CH中断例程完成 jmp near ptr s指令的功能,用bx向中断例;程传送转移位置
答:
;jmp 是无条件转移指令感觉做起来更加简单
;我这个程序和书上例子不一样,是比较完整的程序
;cld很重要刚忘记加了结果- -
;7ch*4(因为对于每个 中断类型码入口地址 大小是2个字的...
(1) 答:上面的7CH中断例程所能进行的最大转移位移为 FFFF。
理由:1.循环所依据的偏移地址是靠寄存器来实现的,寄存器的范围最大也只有FFFF
理由:2.7CH 的例子仅仅靠修改IP而非cS可见其绝对不是远转移,所以范围在FFFF内
(2) 用7CH中断例程完成 jmp near ptr s指令的功能,用bx向中断例;程传送转移位置
答:
;jmp 是无条件转移指令感觉做起来更加简单
;我这个程序和书上例子不一样,是比较完整的程序
;cld很重要刚忘记加了结果- -
;7ch*4(因为对于每个 中断类型码入口地址 大小是2个字的...
阅读全文 |
评论次数(0) |
浏览次数(344) |
所属类型(默认类型)
[2009-06-09 09:56] 检测9.1 9.2 9.3
检测9.1
(1)
assume cs:code
data segment
dw 0,0,0,0 ;此处为填入的位置
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
(2)程序如下:
assume cs:code
data segment
dd 12345678H
da...
(1)
assume cs:code
data segment
dw 0,0,0,0 ;此处为填入的位置
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
(2)程序如下:
assume cs:code
data segment
dd 12345678H
da...
阅读全文 |
评论次数(0) |
浏览次数(323) |
所属类型(默认类型)
[2009-06-03 08:38] 检测点10.1 10.2 10.3 10.4 10.5
检测点10.1
补全程序,实现从内存1000:0000处开始执行指令。
assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ax,1000h (填空) ;把段地址压入堆栈
push ax
mov ax,0 (填空) ; 把偏移地址压入堆栈
push ax
...
补全程序,实现从内存1000:0000处开始执行指令。
assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ax,1000h (填空) ;把段地址压入堆栈
push ax
mov ax,0 (填空) ; 把偏移地址压入堆栈
push ax
...
阅读全文 |
评论次数(0) |
浏览次数(335) |
所属类型(默认类型)
页码数(1):
1