logo资料库

微机实验答案.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
实验一:编程练习 1) STACK SEGMENT STACK DW 64 DUP (?) ENDS SEGMENT ORG 0500H ;起始地址 DB 25H, 30H, 32H, 34H, 65H DB 5 DUP (?) ENDS SEGMENT ASSUME DS: DATA, CS: STACK DATA DATA1 DATA2 DATA CODE CODE START: MOV AX, DATA MOV DS, AX MOV AH, 0FFH; MOV CX, 05H;计数,五个数 LEA SI, DATA1 LEA DI, DATA2 NEXT: MOV AL, [SI] CMP AL, 3AH;比较 JNC FF1;CF=0 转移 CMP AL, 30H JC FF1;CF=1 转移 SUB AL, 30H MOV [DI], AL INC SI INC DI LOOP NEXT;CX≠0 则循环 JMP DONE MOV [DI], AH;把 FFH 存入 JMP BACK BACK: FF1: DONE: MOV AH, 4CH CODE INT 21H;程序退出 ENDS END START 2) STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS DATA SEGMENT ORG 0500H DW 00AAH ORG 0510H DB 5 DUP (?);0510H-0514H ENDS SEGMENT ASSUME DS: DATA, CS: DATA1 DATA2 DATA CODE CODE START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET DATA1 MOV DI, OFFSET DATA2 MOV CX, 05H;计数,五位 MOV AX, [SI] XOR DX, DX;清空 DX MOV BX, 0AH DIV BX;DL,AX/BX 的余数? ADD DL, 30H;变为 ASCII MOV [DI], DL INC DI LOOP DONE;CX≠0 则循环 MOV AH, 4CH INT 21H ENDS END START DONE: CODE 实验二:编程练习 2) STACK A: SEGMENT STACK DW 64 DUP (?) ENDS SEGMENT ORG 0500H DB 10H, 20H, 30H, 40H, 50H, ORG 0510H DB ? SEGMENT ASSUME DS: DATA, CS: CODE STACK DATA DATA1 60H DATA2 CODE MOV AH, 4CH INT 21H ENDS END START CODE 2)OPTIONAL 可选(不太懂) START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET DATA1 MOV DI, OFFSET DATA2 MOV CX,0006H MOV AX,0000H MOV BL, [SI] INC SI ADD AL, BL ADC AH,00H;带进位的加法 LOOP A MOV CL,06H DIV CL MOV AH,00H MOV BL,0AH DIV BL MOV BH, AH MOV BL,10H MUL BL ADD AL, BH MOV [DI], AL MOV AH,4CH INT 21H ENDS END START CODE START: MOV AX, DATA A1: MOV DS, AX MOV SI, OFFSET DATA1 MOV DI, OFFSET DATA2 XOR DX, DX;清空 MOV CX, 6;计数 MOV AL, [SI] CBW;AL 扩展为 16 位 AX ADD DX, AX INC SI LOOP A1 MOV AX, DX MOV BL, 06H DIV BL MOV BL, 0AH;?? DIV BL;详细见后面 MOV [DI], AX 3) STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS DATA SEGMENT ORG 0500H DB 10H, 15H, 0FH ORG 0510H DB 3 DUP (?) ENDS SEGMENT ASSUME DS: DATA, CS: DATA1 DATA2 DATA CODE CODE START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET DATA1 MOV DI, OFFSET DATA2 MOV AL, [SI]
MOV BL, [SI+1] ADD AL, BL MOV BL, [SI+2] ADD AL, BL MOV CL,02H SALAL, CL;算术左移 2 位 MOV AH,00H MOV CX,03H XOR DX, DX;清空 DX MOV BX, 0AH DIV BX;十六进制转 BCD MOV [DI], DL INC DI LOOP DONE MOV AH, 4CH INT 21H ENDS DONE: CODE END START 实验三:编程练习 1) STACK STACK DATA DATA SEGMENT STACK DW 64 DUP (?) ENDS SEGMENT SEGMENT ORG 0500H DB 09H 数 据 个 数 ,12H, 80H, DATA1 78H, 0C8H, 00H, 00H, 0FEH, 99H, 34H DATA2 DATA CODE ORG 0510H DB 3 DUP (?) ENDS SEGMENT ASSUME DS: DATA, CS: CODE START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET DATA1 MOV DI, OFFSET DATA2 MOV CL, [SI];计数数据次数 MOV CH,00H MOV BH,00H MOV BL,00H MOV DL,00H INC SI MOV AL, [SI] CMP AL, 0 JLE A2 INC BH;正数加一 JMP OVER A2: A1: A1: A2: A3: OVER: CODE CMP AL, 0 JL A3 INC BL;零加一 JMP OVER INC DL;负数加一 INC SI;判断次数 LOOP A1 MOV [DI], BH;正数 MOV [DI+1], DL;负数 MOV [DI+2], BL;零 MOV AH,4CH INT 21H ENDS END START 2) STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS DATA SEGMENT ORG 0200H DB 3 DUP (?) ORG 0204H DW ? ENDS SEGMENT ASSUME DS: DATA, CS: DATA1 DATA2 DATA CODE CODE START: MOV AX, DATA MOV DS, AX LEA SI, DATA1 LEA DI, DATA2 MOV AL, [SI] MOV AH, [SI+1] MOV BL, [SI+2];将三数移到 CMPAL, AH JZ A1 CMPAL, BL;详细看后面 JZ A2 MOV [DI], SI JMPA4 INC SI MOV [DI], SI JMPA4 CMPAL, BL JZ A3 ADD SI, 2 MOV [DI], SI JMPA4 A3: A4: CODE MOV [DI], 0FFFFH;相同 MOV AH, 4CH INT 21H ENDS END START 实验四:编程练习 1) STACK SEGMENT STACK DW 64 DUP (?) ENDS SEGMENT STR1 DB 0AH, 0DH, 'Input STACK DATA two numbers A & B: $' ORG 0204H DB 3 DUP (?) ENDS SEGMENT ASSUME DS: DATA, CS: DATA1 DATA CODE CODE START: MOV AX, DATA A: MOV DS, AX MOV DX, OFFSET STR1 MOV AH, 09H;显示字符串 INT 21H MOV AH, 01H 输入单字符 INT 21H CMP AL, 0DH JZ OVER SUB AL, 30H MOV BL, AL MOV AH, 01H;输入单字符 INT 21H CMP AL, 0DH; “回车(0AH)”和“换行(0DH)” JZ OVER MOV AH, 00H SUB AL,30H ADD AL, BL AAA;将 AL 的和调整到 BCD 格式 ADD AH, 30H MOV DL, AH MOV BH, AL MOV AH, 02H;显示单 ASCII INT 21H ADD BH, 30H MOV DL, BH MOV AH, 02H 显示单 ASCII INT 21H JMP A
JMP OVER A3: ADD DX,0CH OVER: MOV AH,09H INT 21H JMPA1 MOV AH,4CH INT 21H ENDS END START EX: CODE DIV src:AX 除以 src 中的值 商放 AL 余 数放 AH(8 位) DIV src:(DX,AX)除以 src 中的值 商放 AX 余数放 DX(16 位) CMP AX,BX 的逻辑含义是比较 AX,BX 中的值。如果执行后: ZF=1 则 AX=BX ZF=0 则 AX!=BX SF=1 则 AX=BX SF=0 并 ZF=0 则 AX>BX SF=1 或 ZF=1 则 AX<=BX OVER: MOV AH, 4CH CODE INT 21H ENDS END START 2)判断两个数大小,输出 A>B STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS DATA SEGMENT STR1 DB 0AH, 0DH, 'Input data A:$', 0AH, 0DH, 'Input data B: $' STR2 DB 0AH, 0DH, 'A>B$', 0AH, 0DH, 'A=B$', 0AH, 0DH, 'A
分享到:
收藏