实验一 数据传送
1、子程序Move中为什么比较SI、DI?
源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
第一章源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
2、编写一个程序,将DS段中的数据传送到实验仪B4区的61C256中。说明:B4区的
61C256在I/O设备区,使用IOR、IOW读写。
实验二 数制转换实验
1. 实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么? 最大65535(FFFF),最小为0.存储器只能存16位,即FFFF。
2. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值? N?D4?104?D3?103?D2?102?D1?10?D0
Di:表示十进制数0~9
将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。
该位除以10取商,加30H。即加30H为对应的 ASCII码。
3. 在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次? 取出存入四位十六进制数的下一位。腾出空间。
4. 自编ASCII码转换十六进制、二进制转换BCD码的程序,并调试运行。 ASCII码转换十六进制 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX,0004H MOV DI,3500H MOV DX,[DI] A1: MOV AX,DX AND AX,00FFH CMP AL,40H JB A2 SUB AL,07H A2: SUB AL,30H MOV [DI+0DH],AL DEC DI PUSH CX MOV CL,08H SHR DX,CL POP CX LOOP A1 MOV AX,4C00H INT 21H CODE ENDS
实验三 运算类编程实验
1. 求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H;
2. 多字节加法程序设计,参考原程序,编写个两个64位数的减法程序,结果保存到具体内存单元,调试并记录。
实验四 分支程序设计实验
1、将源数据首址改为3100H,目的数据地址改为310A,再加以验证(注意单步调试); 2、将源数据首址改为310AH,目的数据地址改为3100,再加以验证(注意单步调试)。
实验六 排序程序设计实验
1、注意两个循环是如何循环的,如果想减少判断次数,比如说几次交换后就不再有数据交换了,如何修改程序来减少程序执行时间;
2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。
思考题2. 编一程序把3000H-3009H的内容从大到小排列
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 000AH MOV SI, 300AH MOV BL, 0FFH A1: CMP BL, 0FFH JNZ A4 MOV BL, 00H DEC CX JZ A4 PUSH SI PUSH CX A2: DEC SI MOV AL, [SI] DEC SI CMP AL, [SI] JB A3 XCHG AL, [SI]
A3: A4: MOV [SI+01H], AL
MOV BL, 0FFH INC SI LOOP A2 POP CX POP SI JMP A1 MOV AX,4C00H INT 21H ;程序终止
CODE ENDS END START
思考题3.若是有符号数,该怎么处理负的环节)
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 000AH MOV SI, 300AH MOV BL, 0FFH A1: CMP BL, 0FFH JNZ A7 MOV BL, 00H DEC CX JZ A7 PUSH SI PUSH CX A2: DEC SI MOV AL, [SI] DEC SI MOV AH, 80H CMP AL, AH JB A3 CMP [SI] , AH JB A5 CMP AL, [SI] JB A6 JMP A5
A3: CMP [SI] , AH
(需要增加比较数字正 JB A4 JMP A6
A4: CMP AL,[SI] JB A5 JMP A6
A5: XCHG AL,[SI] MOV [SI+01H],AL MOV BL,0FFH
A6: INC SI LOOP A2 POP CX POP SI JMP A1 A7: MOV AX,4C00H INT 21H ;程序终止 CODE ENDS END START END START
硬件一 静态存储器扩展实验(接线只有一种)
5. 改变实验程序,按非规则字写存储器,观察实验结果。
规则字是低位地址为奇数,否者是非规则字,非规则字读取需要两个周期,而规则字只需要一个周期
在计算机中,一个字占两个字节。一个字在存储器中按字节存储,若高地址为偶数,低地址为奇数,则为规则字。相反,若高地址为奇数,低地址为偶数,则为非规则字。
...字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节
7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。
XA15XD0...系统总线...D7D8...A14D06. 改变实验程序,按字节方式写存储器,观察实验现象。
XA1A0SRAMXD7XD85. 改变实验程序,按非规则字写存储器,观察实验结果。 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS
CODE SEGMENT
START PROC FAR ;远过程名
ASSUME CS:CODE ;分配代码段cs MOV AX, 8000H ; 存储器扩展空间 MOV DS, AX ;数据段ds地址
XD15BLE#BHE#MWR#MRD#MY0D15BLE#BHE#WRRDCS单元......