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 ...

[2009-06-12 07:40] 检测点16.2
阅读全文 |
评论次数(1) |
浏览次数(250) |
所属类型(汇编作业)
[2009-06-12 07: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]_
;获得代码段的起始地址cs:[si], a相当于cs:[0]
add _word ptr b[0]_,ax
; 累加标号a中的起始数据到标号b中
adc ...
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 ...
阅读全文 |
评论次数(1) |
浏览次数(253) |
所属类型(汇编作业)
[2009-06-12 07:39] 检测点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]
pus...
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...
阅读全文 |
评论次数(1) |
浏览次数(254) |
所属类型(汇编作业)
[2009-06-12 07:39] 检测点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 2...
提示:(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 2...
阅读全文 |
评论次数(1) |
浏览次数(255) |
所属类型(汇编作业)
[2009-06-12 07:39] 检测点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
-------------------------------------------------...
程序如下:
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
-------------------------------------------------...
阅读全文 |
评论次数(1) |
浏览次数(239) |
所属类型(汇编作业)
[2009-06-12 07:38] 检测点13.2
1)我们可以编程改变FFFF:0处的指令,使得CPU不去执行bios中的硬件系统检测和初始化程序
解析及答案:
此说法错误。用debug的e命令试验对FFFF:0单元写入信息和d命令查看得知无效。所以FFFF:0单元是只能读出不能写入的存储单元,所以不能更改其中的内容。
------------------------------------------------------
(2)int 19h中断例程,可以由dos提供。
解析及答案:
由书本“硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。”…..此后d...
解析及答案:
此说法错误。用debug的e命令试验对FFFF:0单元写入信息和d命令查看得知无效。所以FFFF:0单元是只能读出不能写入的存储单元,所以不能更改其中的内容。
------------------------------------------------------
(2)int 19h中断例程,可以由dos提供。
解析及答案:
由书本“硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。”…..此后d...
阅读全文 |
评论次数(1) |
浏览次数(253) |
所属类型(汇编作业)
[2009-06-12 07:37] 检测点13.1
(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
解析:
7CH中断例程的最大转移位移应为:FFFFH(据bx所知) 其转移范围应为:-32768~32767
而 loop指令的最大转移位移应为:FFH 其转移范围应为:-128~127
------------------------------------------------------
(2)用7ch中断例程完成jmp near ptr s 指令的功能,用bx向中断例程中传送转移位移。
解析及答案:
assume cs:...
解析:
7CH中断例程的最大转移位移应为:FFFFH(据bx所知) 其转移范围应为:-32768~32767
而 loop指令的最大转移位移应为:FFH 其转移范围应为:-128~127
------------------------------------------------------
(2)用7ch中断例程完成jmp near ptr s 指令的功能,用bx向中断例程中传送转移位移。
解析及答案:
assume cs:...
阅读全文 |
评论次数(1) |
浏览次数(268) |
所属类型(汇编作业)
[2009-06-01 19:19] 检测点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 010...
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 010...
阅读全文 |
评论次数(1) |
浏览次数(195) |
所属类型(汇编作业)
[2009-06-01 19:18] 检测点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处是没找到符合要求的...
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处是没找到符合要求的...
阅读全文 |
评论次数(1) |
浏览次数(215) |
所属类型(汇编作业)
[2009-06-01 19:18] 检测点11.2
sub al,al 结果:0 CF=0 OF=0 SF=0 ZF=1 PF=1
mov al,10H 16 结果:10H 不影响标志寄存器 同上一步
CF=0 OF=0 SF=0 ZF=1 PF=1
add al,90H -120 结果:0A0H=1010 0000B(PF)=--96(SF) -96>-128(OF)
CF=0 OF=0 SF=1 ZF=0 PF=1
mov al,80H -128 ...
mov al,10H 16 结果:10H 不影响标志寄存器 同上一步
CF=0 OF=0 SF=0 ZF=1 PF=1
add al,90H -120 结果:0A0H=1010 0000B(PF)=--96(SF) -96>-128(OF)
CF=0 OF=0 SF=1 ZF=0 PF=1
mov al,80H -128 ...
阅读全文 |
评论次数(1) |
浏览次数(215) |
所属类型(汇编作业)
『 查看更多文章 』