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

我的博客

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

[2012-05-02 19:42] 第十一章作业

图片载入中
第十一章
检测点11.1
写出下面每条指令执行后,ZF、PF、SF、等标志位的值。 
sub al,al     al=0h        ZF=1        PF=1        SF=0  
mov al,1      al=1h        ZF=1        PF=1        SF=0  
push ax       ax=1h        ZF=1        PF=1        SF=0  
pop bx        bx=1h        ZF=1        PF=1        SF=0  
add al,bl     al=2h        ZF=0        PF=0        SF=0  
add al,10     al=0ch       ZF=0        PF=1        SF=0  
mul al        ax=90h       ZF=0        PF=1        SF=0
add、sub、mul、div 、inc、or、and等运算指令影响标志寄存器
mov、push、pop等传送指令对标志寄存器没影响。

检测点11.2
写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。 
              al                 CF    OF    SF    ZF    PF
sub al,al     0h/0000 0000b      0     0     0     1     1
mov al,10h    10h/0001 0000b     0     0     0     1     1
add al,90h    a0h/1010 0000b     0     0     1     0     1
mov al,80h    80h/1000 0000b     0     0     1     0     1
add al,80h    0h/0000 0000b      1     1     0     1     1
mov al,0fch   0fch/1111 1100b    1     1     0     1     1
add al,05h    1h/0000 0001b      1     0     0     0     0
mov al,7dh    7dh/0111 1101b     1     0     0     0     0
add al,0bh    88h/1000 1000b     0     1     1     0     1

检测点11.3 
(1)补全下面的程序,统计F000:0处32个字节中,大小在[32,128]的数据个数。
 mov ax,0f000h
 mov ds,ax
 mov bx,0  ;ds:bx指向第一个字节
 mov dx,0  ;初始化累加器
 mov cx,32
s:  mov al,[bx]
 cmp al,32  ;和32进行比较
 jb s0      ;如果低于al转到s0,继续循环
 cmp al,128 ;和128进行比较
 ja s0      ;如果高于al转到s0,继续循环
 inc dx
s0: inc bx
 loop s

[32,128]是闭区间,包括两端点的值 

检测点11.3 
(2)补全下面的程序,统计F000:0处32个字节中,大小在(32,128)的数据个数。
 mov ax,0f000h
 mov ds,ax
 mov bx,0  ;ds:bx指向第一个字节
 mov dx,0  ;初始化累加器
 mov cx,32
s:  mov al,[bx]
 cmp al,32  ;和32进行比较
 jna s0      ;如果不高于al转到s0,继续循环
 cmp al,128 ;和128进行比较
 jnb s0     ;如果不低于al转到s0,继续循环
 inc dx
s0: inc bx
 loop s

 (32,128)是开区间,不包括两端点的值

检测点11.4 
下面指令执行后,(ax)= 45h 
mov ax,0             ;ax=0
push ax 
popf                 ;flag置零
mov ax,0fff0h        ;ax=0fff0h
add ax,0010h         ;ax=0,flag为000000**010*0101b  *表示未知
Pushf                ;将flag的值入栈
pop ax               ;将000000**010*0101b送入ax中
and al,11000101B     ;设*为零,则al=01000101b=45h
and ah,00001000B     ;ah=0
so,ax=45h

实验十一
letterc:                     ;定义子程序
;名称:letterc
;功能:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si指向字符串首地址

         push cx
  push si
   
ltc0:  mov cl,[si]         ;将内存中的字符数据放到cl中
  mov ch,0            ;将ch置零
  jcxz ltc2           ;当遇到结尾符'0',则会跳转到ret
   
  cmp cl,61h          ;比较字符'a'
  jb ltc1             ;当小于61h时,跳转到ltc1
  cmp cl,7ah          ;比较字符'z'
  ja ltc1             ;当大于7ah时,跳转到ltc1
   
  and byte ptr [si],11011111b ;转换为大写
   
ltc1:  inc si              ;指向下一个字符
  jmp ltc0            ;跳转到ltc0,继续扫描
   
ltc2:    pop si
         pop cx
  ret                 ;结束子程序
评论次数(3)  |  浏览次数(224)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-05-02 20:55  ]

博主完成地很不错哦!没看出有什么问题,看到这样的作业,说心理话,真的很高兴!博主很勤奋,很认真,将来一定会梦想成真的。

继续加油哦!

[  fpamc   发表于  2012-05-02 21:17  ]

恩,一起加油!嘿~至于勤奋嘛……最近好像偷懒了耶……

[  dxiaolin   发表于  2012-05-03 12:10  ]

向你学习

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码