视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
用汇编语言制作一个加法器
2025-09-28 00:46:57 责编:小OO
文档
用汇编语言制作一个加法器

一、实验目的

1、掌握条件分支的汇编程序设计方法。

2、熟悉汇编软件,掌握汇编程序的编写和调试方法。

3、掌握数据和字符的显示方法。

二、实验原理

在数据段上存放两个8位的非压缩BCD码数据X、Y,如下表:

X09H
Y08H
CARRY
RESULT
把这两个BCD码相加,结果以ASCII码方式存放在RESULT中。如果有进位,CARRY=31H,否则CARRY=30H(31H为“1”的ASCII码,30H为“0”的ASCII码)。并在屏幕上显示结果。

提示,字符输出程序:

MOV DL, “待输出的ASCII码”

MOV AH, 2

INT 21H

如何取数据:

MOV SI, OFFSET X

MOV AL, [SI]

三、实验内容

代码内容如下:

DATAS SEGMENT

    X DB 09H

    Y DB 08H

    L DB 00H

    CARRY DB ?

    RESULT DB 10,13,'8+9=',?,?,10,13,10,'CARRY=',?,?,?,'$'  

DATAS ENDS

CODES SEGMENT

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

START:

    MOV AX,DATAS;

    MOV DS,AX;

    LEA SI,X;

    LEA DI,Y;

    MOV AL,[SI];

    ADC AL,[DI];

    MOV RESULT, AL;

    

    JC DONE

    MOV [CARRY],30H

    JMP SHOW

DONE:MOV [CARRY],31H

SHOW:

    MOV BH,[CARRY]

    MOV [RESULT+17],BH

    MOV AL,[RESULT];

    AND AL,0FH;

    ADD AL,36H;

    MOV [RESULT+7],AL;

    MOV AL,[RESULT];

    MOV CL,4;

    SHR AL,CL;

    ADD AL, 30H;

    MOV [RESULT+6],AL;

    

    LEA DX,RESULT;

    MOV AH,09H

    INT 21H;

 

    MOV AH,4CH

    INT 21H

CODES ENDS

    END START

运行结果:

四、实验总结

本人之前学习过51单片机相关知识,并懂得用C语言写一些程序。对于汇编语言只能看懂一些。通过对微机的学习、以及本次试验课程,我熟悉了汇编软件,掌握汇编程序的编写和调试方法;掌握了条件分支的汇编程序设计方法;掌握数据、字符和字符串的显示方法和学会了编写一些简单的程序,使我获益菲浅。但感觉还是C语言好用,希望通过深入学习发现汇编语言的魅力,以及深入了解微机这门课程的意义。下载本文

显示全文
专题