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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2009-06-12 07:46] 检测点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 ...
阅读全文 | 评论次数(1) | 浏览次数(244) | 所属类型(汇编作业)

[2009-06-12 07:46] 检测点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 ...
阅读全文 | 评论次数(2) | 浏览次数(299) | 所属类型(汇编作业)

[2009-06-12 07:45] 检测点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...
阅读全文 | 评论次数(1) | 浏览次数(288) | 所属类型(汇编作业)

[2009-06-12 07:45] 检测点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...
阅读全文 | 评论次数(1) | 浏览次数(281) | 所属类型(汇编作业)

[2009-06-12 07:44] 检测点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 

--------------------------------------------------...
阅读全文 | 评论次数(1) | 浏览次数(300) | 所属类型(汇编作业)

[2009-06-12 07:43] 检测点13.2

(1)我们可以编程改变FFFF:0处的指令,使得CPU不去执行bios中的硬件系统检测和初始化程序 

解析及答案: 
此说法错误。用debug的e命令试验对FFFF:0单元写入信息和d命令查看得知无效。所以FFFF:0单元是只能读出不能写入的存储单元,所以不能更改其中的内容。 

------------------------------------------------------ 
(2)int 19h中断例程,可以由dos提供。 

解析及答案: 
由书本“硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。”…..此后...
阅读全文 | 评论次数(1) | 浏览次数(268) | 所属类型(汇编作业)

[2009-06-12 07:42] 检测点13.1

(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?  

解析: 
7CH中断例程的最大转移位移应为:FFFFH(据bx所知)  其转移范围应为:-32768~32767 

而 loop指令的最大转移位移应为:FFH  其转移范围应为:-128~127 

------------------------------------------------------ 
(2)用7ch中断例程完成jmp near ptr s 指令的功能,用bx向中断例程中传送转移位移。 

解析及答案: 
assume cs:...
阅读全文 | 评论次数(1) | 浏览次数(267) | 所属类型(汇编作业)

[2009-06-01 19:24] 检测点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...
阅读全文 | 评论次数(1) | 浏览次数(228) | 所属类型(汇编作业)

[2009-06-01 19:24] 检测点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处是没找到符合要求的...
阅读全文 | 评论次数(1) | 浏览次数(224) | 所属类型(汇编作业)

[2009-06-01 19:23] 检测点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  ...
阅读全文 | 评论次数(1) | 浏览次数(235) | 所属类型(汇编作业)
『 查看更多文章 』