微机软件实验习题与答案(完整版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理软件实验

实验1两个多位十进制数相加的实验

实验内容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA必首的5个内存单元中(低位在前),结果送回DATA 攸t。完整代码如下:

DATAS SEGMENT

;此处输入数据段代码

STRING1 DB 'input the first number:' ,'$'

STRING2 DB 13,10,nput the second number:' ,'$'

STRING3 DB 13,10the output is:' ,'$'

DATA1 DB 6 DUP(00H),'$'

DATA2 DB 6 DUP(00H)'$'

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

;此处输入代码段代码

LEA SI,DATA1

LEA DI,DATA2

L0:

LEA DX,STRING1;打印字符申STRING1

MOV AH,09

INT 21H

INPUT1:;输入第一个数

MOV AH,01;输入字符至AL中

INT 21H

CMP AL,'/'

JE L1

MOV [SI],AL

JMP INPUT1

L1:

LEA DX,STRING2;打印字符申STRING2

MOV AH,09

INT 21H

INPUT2: ;输入第二个数

MOV AH,01;输入字符至AL

INT 21H

CMP AL,'/'

JE L2

MOV [DI],AL

INC DI

JMP INPUT2

L2:

MOV SI,0

CLC;活空进位标志位CF

PLUSE:;相加;SUB DATA1[SI],30H

;SUB DATA2[SI],30H

;这里不能使用这两条指令,因为如果DATA1[5]=00H,00H-30H需要借位相减,使

CF=1

MOV AL,DATA1[SI]

ADC AL,DATA2[SI]

AAA ;加法调整指令,可使两个ASCIB直接相加

MOV DATA1[SI],AL ;和赋给DATA1[SI]

INC SI

LOOP PLUSE

L3:

LEA DX,STRING3;打印字符申STRING3

MOV AH,09

INT 21H

MOV CX,6

MOV SI,6

SHOW:

DEC SI

CMP DATA1[SI],00H

JE SHOW

SHOW2:

MOV DL,DATA1[SI]

ADD DL,30H

MOV AH,02

INT 21H

CMP SI,0

JE L4

DEC SI

JMP SHOW2

L4: MOV AH,4CH

INT 21H

CODES ENDS

END START

运行结果如下:输入为低位在前,即输入1234和99999相加实际上是4321和99999 相加(即:4321+99999=104320

g DCsOa sr *『4 Zpu ipe^A. WDU W K Ffsk*

0.

实验2两个数相乘的实验(无符号数相乘)

实验内容:实现十进制数的乘法。要求被乘数和乘数均以ASCII码形式各自顺序存放在内存中,乘积在屏幕上显示出来。完整代码如下:

DATAS SEGMENT

;此处输入数据段代码

STRING1 DB 'the output is:' ,'$'

DATA1 DB 31H,32H,33H

DATA2 DB 35H,36H

DATAS ENDS

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

;此处输入代码段代码

MOV DL,10

MOV AL,DATA1[0] ;AL=31H

SUB AL,30H ;AL=01H

MUL DL;乘10 ;AL=10

ADD AL,DATA1[1];AL=10 +32H

SUB AL,30H ;AL=10 +32H-30H=12

MUL DL ;AL=120

ADD AL,DATA1[2] ;AL=120+33H

SUB AL,30H ;AL=120+33H-30H=123

J

MOV AL,DATA2[0] ;AL=35H

SUB AL,30H ;AL=5

MUL DL;乘10 ;AL=50

ADD AL,DATA2[1] ;AL=50+36H

SUB AL,30H ;AL=50+36H-30H=56

MUL BL ;AX=123x56=6888

SUB DX,DX;DX 活零

MOV BX,1000

DIV BX;(DX,AX)/1000,商6在AX 中,余数888在DX中PUSH DX

MOV DL,AL

ADD DL,30H

MOV AH,02 ;打印最高位6

INT 21H

POP DX

相关文档
最新文档