南邮 微机原理(微型计算机与接口技术)第3章习题解答.ppt
文本预览下载声明
第3章习题解答 3.5 (1)方法1 MOV AX,WORD PTR FIRST MOV BX,WORD PTR SECOND MOV WORD PTR FIRST,BX MOV WORD PTR SECOND,AX 注意: PTR用于临时修改属性,常用方法是 在存储器操作数之前使用。 例如: WOR PTR FIRST WORD PTR [BX] BYTE PTR [SI+BX] 方法2:使用交换指令 MOV AL,FIRST XCHG AL,SECOND MOV FIRST,AL MOV AL,FIRST+1 XCHG AL,SECOND+1 MOV FIRST+1,AL 注意:XCHG指令的两个操作数只能同为寄存器,或者寄存器和内存操作数,而不能同为内存操作数。 (2)PUSH WORD PTR FIRST ;堆栈只能16位操作 PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND 3.6 先将10进制数转换成16进制数 TABLE DW 009EH,0102H,0166H,01CAH 3.7 MOV EDX,0 MOV EAX,1193182 MOV EBX, 433 DIV EBX MOV XX,AX 注意:使用双字除法,被除数默认在EDX和EAX中(EDX为高位),除数在另一个32位寄存器或存储器中,经除法操作后的商在EAX中,余数在EDX中。 本题结果为2756,没有超过65536,所以EAX的高16位=0,而AX中的商即为正确结果。 如果使用字除法,先将被除数转换成16进制数,然后放到DX和AX中,则商在AX中,余数在DX中。 3.8 SHL AH,4 ;左移4位 AND AL,0FH ;屏蔽高4位 OR AH,AL ;完成拼装 3.9 程序: MOV CL,8 ;移位次数=8 L1:RCL AL,1 ;含进位的循环左移一位 RCR BL,1 ;含进位的循环右移一位 DEC CL ;移位次数有无达到8次 JNZ L1 ;有无达到8次,没有转L1 MOV AL,BL ;将结果传送到AL 3.10 第1小题的框图 程序: (1) DATA SEGMENT BUF DB 50 DUP(?) ;原始数据 PLUS DB 50 DUP(?) ;存放正数 MINUS DB 50 DUP(?) ;存放负数 DATA ENDS 程序: LEA BX, BUF ;数据指针 LEA SI, PLUS ;正数指针 LEA DI, MINUS ;负数指针 MOV CX,50 ;数据长度=50 S1: CMP BYTE PTR [BX],0 ;与0比较 JZ COM ;=0 准备取下一个数判断 JL M1 ;为负数转到M1处理 MOV AL,[BX] ;取数 MOV [SI],AL ;将正数存入PLUS缓冲区 INC SI ;修改正数缓冲区地址指针 JMP COM ;转到长度计数部分 M1: MOV AL,[BX] ;取数 MOV [DI], AL ;将负数存入MINUS缓冲区
显示全部