"在int 16h中断例程中,一定有设置IF=1的指令。"这种说法对吗?
解析:
对
因为在int 16的例程中必须要设置IF=1来让CPU响应int 9,来读取键盘的输入。...
- [tomato] 正确。 06/15 14:40
- [tomato] 正确。 06/12 09:22
- [tomato] 正确。 06/12 09:21
- [tomato] 第二题共有两个地方。 06/12 09:20
- [游客] 正确。 06/10 16:36
- [游客] 加油! 06/08 10:38
- [游客] OK! 06/08 10:25
- [martian] 检测点13.2 (1)建议博主再考虑考虑,FFFF:0的跳转指令是如何被初始化到此为止的。 06/03 15:58
- [tomato] Good!It's true! 05/31 11:29
- [tomato] True!Continue! 05/31 11:28
[2009-06-13 15:32] 检测点17.1
阅读全文 |
评论次数(1) |
浏览次数(410) |
所属类型(汇编作业)
[2009-06-11 21:00] 检测点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
mov ax,...
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
mov ax,...
阅读全文 |
评论次数(1) |
浏览次数(434) |
所属类型(汇编作业)
[2009-06-11 20:58] 检测点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]_
;获得代码段的起始地址cs:[si], a相当于cs:[0]
add _word ptr b[0]_,ax
; 累加标号a中的起始数据到标号b中
adc _word ptr b...
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]_
;获得代码段的起始地址cs:[si], a相当于cs:[0]
add _word ptr b[0]_,ax
; 累加标号a中的起始数据到标号b中
adc _word ptr b...
阅读全文 |
评论次数(1) |
浏览次数(408) |
所属类型(汇编作业)
[2009-06-11 18:25] 检测点15.1
(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]
push es:[9*4+2]
pop ds:...
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]
push es:[9*4+2]
pop ds:...
阅读全文 |
评论次数(1) |
浏览次数(430) |
所属类型(汇编作业)
[2009-06-07 13:22] 检测点14.2
编程:用加法和移位指令计算(ax)=(ax)*10
提示:(ax)*10=(ax)*2+(ax)*8
程序如下:
assume cs:code
code segment
start:
mov ax,1000h
mov bx,ax
shl bx,1 ;(ax)=(ax)*2
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
mov ax,4c00h
int 21h
code ends...
提示:(ax)*10=(ax)*2+(ax)*8
程序如下:
assume cs:code
code segment
start:
mov ax,1000h
mov bx,ax
shl bx,1 ;(ax)=(ax)*2
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
mov ax,4c00h
int 21h
code ends...
阅读全文 |
评论次数(1) |
浏览次数(458) |
所属类型(汇编作业)
[2009-06-07 13:02] 检测点14.1
(1)编程:读取CMOS RAM的2号单元的内容。
程序如下:
assume cs:code
code segment
start:
mov al,2 ;2号单元为‘分钟’
out 70h,al ;把2号单元地址写入端口地址中
in al,71h ;取得端口的数据即当前时间的‘分’。
mov ax,4c00h
int 21h
code ends
end start
---------------------------------------------------
(2) 编程:向...
程序如下:
assume cs:code
code segment
start:
mov al,2 ;2号单元为‘分钟’
out 70h,al ;把2号单元地址写入端口地址中
in al,71h ;取得端口的数据即当前时间的‘分’。
mov ax,4c00h
int 21h
code ends
end start
---------------------------------------------------
(2) 编程:向...
阅读全文 |
评论次数(1) |
浏览次数(445) |
所属类型(汇编作业)
[2009-06-03 14:47] 检测点13.2
(1)我们可以编程改变FFFF:0处的指令,使得CPU不去执行bios中的硬件系统检测和初始化程序
解析及答案:
此说法错误。用debug的e命令试验对FFFF:0单元写入信息和d命令查看得知无效。所以FFFF:0单元是只能读出不能写入的存储单元,所以不能更改其中的内容。
------------------------------------------------------
(2)int 19h中断例程,可以由dos提供。
解析及答案:
由书本“硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。”…..此后dos才启动...
解析及答案:
此说法错误。用debug的e命令试验对FFFF:0单元写入信息和d命令查看得知无效。所以FFFF:0单元是只能读出不能写入的存储单元,所以不能更改其中的内容。
------------------------------------------------------
(2)int 19h中断例程,可以由dos提供。
解析及答案:
由书本“硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。”…..此后dos才启动...
阅读全文 |
评论次数(1) |
浏览次数(415) |
所属类型(汇编作业)
[2009-06-02 22:39] 检测点13.1
(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
解析:
7CH中断例程的最大转移位移应为:FFFFH(据bx所知) 其转移范围应为:-32768~32767
而 loop指令的最大转移位移应为:FFH 其转移范围应为:-128~127
------------------------------------------------------
(2)用7ch中断例程完成jmp near ptr s 指令的功能,用bx向中断例程中传送转移位移。
解析及答案:
assume cs:code
d...
解析:
7CH中断例程的最大转移位移应为:FFFFH(据bx所知) 其转移范围应为:-32768~32767
而 loop指令的最大转移位移应为:FFH 其转移范围应为:-128~127
------------------------------------------------------
(2)用7ch中断例程完成jmp near ptr s 指令的功能,用bx向中断例程中传送转移位移。
解析及答案:
assume cs:code
d...
阅读全文 |
评论次数(1) |
浏览次数(447) |
所属类型(汇编作业)
[2009-05-22 08:25] 检测点11.4
下面的程序执行后,(ax)等于多少?
mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h
pushf ax
pop ax
and al,11000101B
and ah,00001000B
解析:
前三句:所有标志寄存器清零
执行add ax,0010H后ax=‘1’0000H
OF(11) SF(7) ZF(6) PF(2) CF(0)
0 0 1 1 1
执行pop ax后ax=0 01000101B(对应的标志寄存器...
mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h
pushf ax
pop ax
and al,11000101B
and ah,00001000B
解析:
前三句:所有标志寄存器清零
执行add ax,0010H后ax=‘1’0000H
OF(11) SF(7) ZF(6) PF(2) CF(0)
0 0 1 1 1
执行pop ax后ax=0 01000101B(对应的标志寄存器...
阅读全文 |
评论次数(1) |
浏览次数(409) |
所属类型(汇编作业)
[2009-05-22 08:19] 检测点11.3
1,补全下面的程序,统计F000:3处32个字节中,大小在[32,128]的数据的个数。
mov ax,0f000h
mov ds,ax
mov bx,0
mov dx,0
mov cx,32
s:mov al,[bx]
cmp al,32
________
cmp al,128
_________
inc dx
s0:inc bx
loop s
解析:设其范围为M,则32<=M<=128,由题可知,统计个数时是跳转到s0处,而s0处前面是个数自动增1,所以s0处是没找到符合要求的数据,即M <32和M>12...
mov ax,0f000h
mov ds,ax
mov bx,0
mov dx,0
mov cx,32
s:mov al,[bx]
cmp al,32
________
cmp al,128
_________
inc dx
s0:inc bx
loop s
解析:设其范围为M,则32<=M<=128,由题可知,统计个数时是跳转到s0处,而s0处前面是个数自动增1,所以s0处是没找到符合要求的数据,即M <32和M>12...
阅读全文 |
评论次数(1) |
浏览次数(421) |
所属类型(汇编作业)
『 查看更多文章 』