全球旧事资料 分类
数2传送给CH,
使得CH02H;
5)综合第4和第5点,可知CX寄存器的内容为0200H。
3.阅读如下程序:
ADRRDBXXH,XXH,……,XXH
CMPADRRBX,0
NUMEQU$ADRRRETTDB?
LOOPZDONJNZNEXT
…MOVCX,NUM
MOVBL,OFFHNEXT:MOVRETT,BL
MOVBX,1
HLT
DON:INCBX
请问:(1)该程序完成的功能是什么?
(2)程序执行后指出RETT字节单元中的内容是什么?
答:1在以ADRR为起始地址的数组中,查找第一个非0数据。
2若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将OFFH送入RETT单元中。
解析1程序的前3条指令,用于定义数据:以ADRR为起始地址的数组;
NUM的值为ADRR数组的数据个数;RETT是一个空的字节单元
2)该程序的主体是一个循环,该循环的主要功能是在数组ADRR中第一个非0数据。
如果是由于找到,则将第一个非0数据在数组中的偏移量送入RETT单元中;若没找到非0
数据,则将OFFH送入RETT单元中。
4.现有一子程序:
SUB1PROC
PLUS:TESTBL,80H
TESTAL,80H(检测AL中的数值最高位)JEEXITO
JEPLUS
XCHANGE:XCHGAL,BL
TESTBL,80H
EXITO:RET
JNEEXITO
SUB1ENDP
JMPXCHANGE试回答:(1)子程序的功能是什么?
(2)若调用子程序前AL9AH,BL77H,则返回主程序时,AL______,BL______。
答:1子程序的功能是判别AL和BL中的数是否为异号数,当为异号时
交换,否则不变。
2AL77HBL9AH
解析1)数据是以二进制的形式存储在计算机中的。数据对应的二进制数的最高位是数据的符号位:若为0表示该数为正数,若为1表示该数为负数;
2)TESTAL80H和TESTBL80H指令是在测试AL和BL的最高位(即符号位)的状态是1还是0。
3)若两个数的最高位(即符号位)的状态不同的时候(即两数为异号),则执行XCHANGE标号所对应语句,即交换AL和BL中的内容。
f4)否则若两个数的最高位(即符号位)的状态相同的时候(即两数为同号),则执
行EXIT0标号所对应语句,程序结束,即AL和BL中的内容不被。
5)所以第二问中,AL9AHBL77H:AL中的数据的最高位为1,BL中的数据的
最高位为0,即两个数为异号,所以要交换AL和BL中的内容,即AL77HBL9AH。
5.阅读程序段:
BLOCKDB20H,1FH,08H,81H,OFFH…
LOP1:CMPAL,SI1
RESULTDB?
JNGNEXT

MOVAL,SI1
START:LEASI,BLOCK
NEXT:INCSI
MOVCX,SI
LOOPLOP1
INCSI
MOVRESULT,AL
MOVAL,SI
HLT
请问:(1)该程序完成的功能是什么?
(2)该程序循环的次数是多少?
答:1该程序完成的功能是从20H(32)个有符号数中找出最小的数送入
RESULT单元中。
2r
好听全球资料 返回顶部