**实验一 Debug程序的使用**
1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
-e ds:0200 78 56 34 12 98 BA DC FE
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元 中的数据相加,并将运算结果存放在DS:0208H单元中。
直接寻址:
MOV AX,[0200]
MOV BX,[0202]
ADD AX,[0204]
ADC BX,[0206]
MOV [0208],AX
MOV [020A],BX
间接寻址:
MOV SI,0200
MOV DI,0204
MOV BX,0208
MOV AX,[SI]
MOV DX,[SI+2]
ADD AX,[DI]
ADC DX,[DI+2]
MOV [BX],AX
MOV [BX+2],DX
3、附加题:
①从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x
-e ds:0000 1C 02 01 00 FF FF 38 04 00 00
MOV AX,[0000]
MOV SI,AX
MOV DX,0000
MOV SI,[0002]
IMUL SI
MOV CX,AX
MOV BX,DX
MOV AX,[0004]
CWD
ADD CX,AX
ADC BX,DX
SUB CX,021C
SBB BX,0
MOV AX,[0006]
CWD
SUB AX,CX
ABB DX,BX
MOV SI,[0000]
IDIV SI
MOV [0008],AX
MOV [000A],DX
②完成BX中1的个数的统计(注意这里的LOOP 0108是你dos里循环开始的代码位置,你也可以写成标号的形式);
MOV AL,00
MOV BX,0077
MOV CX,10
SHL BX,1
ADC AL,0
LOOP 0108
③用串操作指令将DS:0000开始20个字初始化为:0DDCCH。并将这20个字的内容复制到其后的20个字里(注意这里的JNZ 0106是你dos里循环开始的代码位置,你也可以写成标号的形式)
MOV CX,14
MOV SI,0
MOV WORD PTR[SI],DDCC
ADD SI,0
DEC CX
JNZ 0106
CLD
MOV SI,0
MOV DI,28
MOV CX,14
REP MOVSW
下载完整实验报告,请移步下载区:
https://download.csdn.net/download/qq_43284141/11289139