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

我的博客

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

[2011-09-01 23:55] 11章检测点及实验11

检测点11·1
写出下面每条指令执行后,ZF,PF,SF等标志寄存位的值:
sub al,al    ZF=1,pf=1,sf=0
mov al,1     ZF=0,pf=0,sf=0
push ax      ZF=0,pf=0,sf=0
pop bx       ZF=0,pf=0,sf=0
add al,bl    ZF=0,pf=0,sf=0
add al,10    ZF=0,pf=1,sf=0
mul al       ZF=0,pf=1,sf=1

检测点11·2
写出下面每条指令执行后,zF、PF、sF、CF、OF等标志位的值。
              CF OF SF ZF PF
sub al,al     0  0  0  1  1
mov al,10H    0  0  0  1  1 
add al,90H    0  0  1  0  1
mov al,80H    0  0  1  0  1
add al,80H    1  1  0  1  1
mov al,0FCH   1  1  0  1  1
add al,05H    1  0  0  0  0
mov al,7DH    1  0  0  0  0
add al,0BH    0  1  1  0  1


检测点11·3
(1)补全下面的程序,统计F000:O处32个字节中,大小在[32,128]的数据的个数。
mov ax,Of000h
mov ds,ax
mov bx,O
mov dx,0
mov cx,32
s:mov al,[bx]
cmp al,32
jb s0
cmp al,128
ja s0
    inc dx
s0: inc bx
    loop s
(2)补全下面的程序,统计F000:0处32个字节中,大小在(32,128)的数据的个数。
    mov ax,0f000h
    mov ds,ax
    mov bx,0
    mov dx,0
    mov cx,32
S:  mov al,[bx]
    cmp al,33
    jb s0
    cmp al,127
    ja s0
    inc dx
s0: inc bx
    loop S

这两题乍一看是一样的,原来[]和()是由区别的,前者是包括,后者是不包括,以前老师都没教过这个,汗! 


检测点11·4
    下面的程序执行后:(ax)=?

mov ax,0
push ax
popf
mov ax,0fff0h
add ax,10
pushf
pop ax
and al,11000101b
and ah,00001000b

ax=45h
这个我不知道怎么算的,add ax,10执行后应该of=0,sf=0,cf=1,pf=1,zf=1,af=0(这个不知道有什么用),if=0,df=0,tf=0,按照排列顺序应该是psw=0000 0000 0100 0101=45h,而我用debug执行了一遍,ax=3047h最后结果也是ax=45h。

 实验11  编写子程序
    编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字
母.描述如下。
名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母
参数:ds:si指向字符串首地址
应用举例:
assume cs:codesg
datasg segment
    db"Beginner's All-purpose Symbolic Instruction Code."0
datasg ends
codesg segment
begin:mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:   :
           :
codesg ends
end begin
注意需要进行转化的是字符串中的小写字母a~Z,而不是其他字符。
assume cs:codesg
datasg segment
    db"Beginner's All-purpose Symbolic Instruction Code."0
datasg ends
codesg segment
begin:mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:mov al,[si]
cmp al,0
je q
cmp al,61h
jb ok
cmp al,7ah
ja ok
and al,0dfh
mov [si],al
ok:inc si
jmp letterc
q:ret           
codesg ends
end begin
评论次数(2)  |  浏览次数(340)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2011-09-02 09:03  ]

11.3(2)可以换对指令解决问题。实验11有点繁琐。参考一下书中的例子。

[  tomato   发表于  2011-09-02 09:05  ]

11.1和11.2可以上机实验验证一下结果。

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