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

我的博客

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

[2009-06-11 21:48] 检测点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...
阅读全文 | 评论次数(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 ...
阅读全文 | 评论次数(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,...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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) | 浏览次数(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 

...
阅读全文 | 评论次数(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个字的...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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  
    ...
阅读全文 | 评论次数(0) | 浏览次数(335) | 所属类型(默认类型)