读书人

两个功能分析题解决方案

发布时间: 2012-02-07 17:45:36 作者: rapoo

两个功能分析题
(1)假设—X)=1234H,(AX)=5678H,分析下列程序的功能,并说明程序段执行结束后AX和DX的值。
MOV BL,DL
MOV CL,4
SHR DX,CL
AND BL,0FH
SHL AX,CL
ROR BL,CL
OR AH,BL

知道AX和DX的值很容易,但是小弟看不出这段的功能(程序段有没错?)

(2)分析一下程序段的功能
MOV AL,A
MOV CL,4
SHR AL,CL
OR AL,30H
MVO C,AL
MOV AL,A
AND AL,OFH
OR AL,30H
MOV B,AL

这段也是一头雾水,全然不知功能(转换为ASCII码?)...希望大家帮个忙,谢谢

[解决办法]
(1)AX的值左移四比特位,DX的值右移四比特位
(2)字型A中的值所表示的16的高四位放在C中,低四位放在B中,使它成可字符。如果有意外的,程序後面B和C的值分39H比,如果大於39H,再加7H,以使十六所表示的A~F之的字成可字符!!
比如:
A=20H B=30H,C=32H
再如:
A=5AH B=3AH,C=35H
若B再加7h等于41H(字符 'A '的ASCII)

[解决办法]
(1)将DL中的34H转化成43H,AX中的bit11~bit4(67H),求43H、67H的或运算,将AX中的5678H左移形成6780,在用43H、67H或的结果填充AH,覆盖67H,这段程序的功能似乎没有什么实际意义,目的在于考察逻辑运算指令。
(2) "A "的ASCII码是41H,程序段的功能是把A的ASCII码的高半字节的‘4’转化为ASCII值,存放到C中。将A的ASCII码的低半字节‘1’转换成ASCII码值,放入B中。如此,以后如果想显示字母‘A’的ASCII以十六进制的形式显示出来,只要连续显示字节变量C和B就可以了。

读书人网 >汇编语言

热点推荐