已知(AX)=0605H,(BX)=0808H,执行下列指令后AX和CF中的内容是什么?该程序段的功能是什么MOVCH,AHAD

已知(AX)=0605H,(BX)=0808H,执行下列指令后AX和CF中的内容是什么?该程序段的功能是什么MOVCH,AHADDAL,BLAAAXCHGAL,CHADCAL,BHAAAMOVAH,ALMOVAL,CH
【正确答案】:两条指令都是正确指令。第一条指令取得NAMES的偏移地址,第二条MOV指令使用间接寻址方始,将地址为(DS)×10H+(BX)+5字节中的数据传送给AL,结果(AL)=20。这条指令不正确。因为NAMES的属性为字节,而目的寄存器是AX,所以类型不匹配。为合法指令。指令中将已定义的字节变量用伪指令PTR改变为字类型,所以避免了类型不匹配的错误。操作结果(AX)=4D4FH。(即M和O的ASCII码)前两条指令使用的是立即数方式,第三条指令的源操作数字段使用的是相对基址变址方式,但形成的数据段地址中的数据属性为字节,而源操作数寄存器为AX,故出现“类型不匹配”的错误。前两条指令是正确的,后两条指令是错误的。OFFSET操作将得到变量的偏移地址,但对相对基址变址寻址方式形成的地址在汇编指令时还是未知的。第四条指令中,AX不能作为基址寄存器。均为合法指令。第三条指令中的DI取得一个字节的值:(BX)+(SI)+OFFSETNAMES然后再按DI中的偏移地址,在数据段中将一字节内容传送给AL寄存器。操作结果(AL)=30。