目录
实验一
1)………………………………………………………………(2) 2)………………………………………………………………(2) 3)………………………………………………………………(3) 实验二………………………………………………………………(4) 实验三
1)………………………………………………………………(5) 2)………………………………………………………………(5) 3)………………………………………………………………(6) 实验六
1)………………………………………………………………(6) 2)………………………………………………………………(7) 实验八
1)………………………………………………………………(8)
实验1 1)从0000:3100H内存单元存放0~15的平方数
STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START:MOV DI,3100H
MOV CX,16 MOV AX,0
MOV DX,0 ;中间寄存器DX(0~15) S1:MOV AX,DX
MUL AL ;ALXAL=AH AL MOV [DI],AL INC DI INC DX LOOP S1 S2:JMP S2 CODE ENDS
END START
分析:
MUL 乘数是8位的, 被乘数是AL=AH AL
16位的, 被乘数是AX=DX AX DIV 除数是 8位的, 被除数是AL=AL存放商,AH存放余数除数是16位的,被除数AX=AX存放商,DX存放余数
实验1 2)REP MOVSB 指令 修改实验1程序2
STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE START:MOV CX,16
MOV AX,0 MOV ES,AX
MOV DS,AX ;赋初值 MOV SI,3100H MOV DI,3200H CMP SI,DI JA S1
ADD SI,CX ADD DI,CX DEC SI DEC DI
S2:STD ;SI REP MOVSB JMP S0 S1:CLD ;SI>DI 从头部开始传 +1操作 REP MOVSB JMP S0 S0:JMP S0 CODE ENDS 1 END START 分析: 关于REP MOVSB指令,使用之前必须对DS:SI源数据块首地址,ES:DI目的数据块的首地址,CX数据块长度,通过指定DF标志位,当DF=0时,每搬一个数据地址指针+1,用于从首址开始搬,DF=1,每搬一个数据地址指针-1,用于从末尾地址开始搬 实验1 3)统计正数、零、负数的个数 STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START:MOV DI,3000H MOV CL,[DI] XOR CH,CH MOV BL,CH INC DI MOV DX,0 L1:MOV AL,[DI] TEST AL,80H JZ L3 INC BL ;负数个数+1 JMP L2 L3:CMP AL,0 JE L4 INC DL ;正数个数+1 JMP L2 L4:INC DH ;0的个数+1 L2:INC DI LOOP L1 MOV [DI],BL MOV [DI+1],DL MOV [DI+2],DH INT 03H CODE ENDS END START 分析: 1.取1个数 2.判断符号位是否为0? Y-->不是负数,继续去判是0还是正数---〉3 N-->是负数,负数个数+1,地址指针+1取下个数---〉4 3.判断这个数是否为0? Y-->是0,0的个数+1,地址指针+1取下个--〉4 N-->是正数,正数个数+1,地址指针+1取下个-〉4 4.地址指针+1取下个 5.是不是最后个数? Y-->去放结果 N-->2 2 4.实验2 去前导0 如果被除数小于除数,则除不尽,会产生前导0,直接不做除法,取下个除数,如果除得尽,以后就不再做被除数与除数之间的比较 STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS DATA SEGMENT DATA1 DW ? ;?为4位16进制数 SYS0 DW 10000,1000,100,10 DATA2 DB 5 DUP(20H) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA TTT PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,DATA1 ;取字数据 LEA BX,SYS0 ;取除数地址 MOV DI,0 ;商首地址 T0: MOV CX,WORD PTR[BX] XOR DX,DX DIV CX CMP AX,0 ;比较是否为0 JNE T2 ;若不为0,则跳至原程序逻辑 MOV AX,DX ;若为0继续找下一个 ADD BX,2 CMP CX,10 ;若查至十位数仍为0,则无论个位多少进入输出环节 JNE T0 JMP T3 T2: ADD AL,30H ;写入,有0会保留 MOV DATA2[DI],AL MOV AX,DX ADD BX,2 INC DI CMP CX,10 JNE T1 JMP T3 T1: MOV CX,WORD PTR[BX] XOR DX,DX DIV CX JMP T2 T3: ADD AL,30H 3 MOV DATA2[DI],AL INC DI MOV BX,OFFSET DATA2 MOV AH,06H INT 10H INT 03H CODE ENDS END TTT 实验3 1)在自小到大排序中如果第一次小循环的首次在头部比较交换过后再没有交换过,那么排序在第一次小循环结束后就结束运行 STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK MMM:MOV CX,15 M4:MOV SI,3000H MOV BL,0 PUSH CX MOV AL,[SI] CMP AL,[SI+1] JBE M1 XCHG AL,[SI+1] INC SI M2:MOV AL,[SI] CMP AL,[SI+1] JBE M1 XCHG AL,[SI+1] MOV [SI],AL MOV BL,1 M1:INC SI LOOP M2 CMP BL,0 JE M3 POP CX LOOP M4 M3: INT 03H CODE ENDS END MMM 实验3 2)有符号字数据排序 STACK SEGMENT STACK DB 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK MMM:MOV CX,15 M4:MOV SI,3000H 4 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理实验报告在线全文阅读。
相关推荐: