汇编网首页登录博客注册
2007211006sj的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
文章收藏
友情链接

[2009-06-13 15:32] 检测点17.1

"在int 16h中断例程中,一定有设置IF=1的指令。"这种说法对吗?

解析:

因为在int 16的例程中必须要设置IF=1来让CPU响应int 9,来读取键盘的输入。...
阅读全文 | 评论次数(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,...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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:...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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) 编程:向...
阅读全文 | 评论次数(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才启动...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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(对应的标志寄存器...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(1) | 浏览次数(421) | 所属类型(汇编作业)
『 查看更多文章 』