吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1480|回复: 0
收起左侧

[其他转载] 8086汇编语言程序设计简要记录(三)

[复制链接]
NIMITIZ 发表于 2021-5-16 20:55
一个涉及子程序调用以及将结果输出到显示器的8086汇编程序。
利用子程序对数据段NUM0db 11,12,13,14和NUM1db 12,13,14,15对应的各个数进行求和(即对NUM0[0]和NUM1[0]进行求和,对NUM0[1]和NUM1[1]进行求和······),将结果存储于以1000H起始的数据段中,并输出结果。

源程序:
DATA SEGMENT
    NUM0 DB 11,12,13,14
    NUM1 DB 12,13,14,15
    ORG 1000H
    SUM DB 4 DUP(?)
DATA ENDS

CODE SEGMENT
    ASSUME DS:DATA,CS:CODE

    START:
    MOV AX,DATA
    MOV DS,AX

    MOV CX,4
    LEA SI,NUM0     ;取段NUM0的偏移地址
    LEA DI,NUM1     ;取段NUM1的偏移地址

    L:
    MOV BL,[SI]
    MOV BH,[DI]
    ADD BH,BL       ;两数相加

    PUSH SI     ;将段NUM0的偏移地址SI压栈,避免与段SUM的偏移地址SI冲突
    MOV SUM[SI],BH      ;将两数相加的结果写入段SUM
    INC SI
    POP SI      ;将段NUM0的偏移地址SI弹栈

    CALL DISPLAY        ;调用子程序DISPLAY实现输出功能
    INC SI
    INC DI
    LOOP L

    MOV AH,4CH
    INT 21H

    DISPLAY PROC        ;子程序DISPLAY

        MOV AL,BH       ;将8位的两数相加之和转换为16位并写入AX作被除数
        MOV AH,0H
        MOV BL,10       ;8位的除数
        DIV BL      ;SUM/10,取得SUM的十位和个位
        PUSH AX     ;将商和余数压栈(商被写入AL,余数被写入AH)

        MOV DL,AL
        ADD DL,30H      ;将SUM的十位转换为其ASCII值,使十位能以字符形式输出
        MOV AH,2H       ;输出结果
        INT 21H

        POP AX      ;将商和余数弹栈
        MOV DL,AH
        ADD DL,30H      ;将SUM的个位转换为其ASCII值,使个位能以字符形式输出
        MOV AH,2H       ;输出结果
        INT 21H

        MOV DL,'D'      ;输出字符D
        MOV AH,2H
        INT 21H

        MOV DL,10       ;输出“换行”
        MOV AH,2H
        INT 21H

        RET     ;子程序返回
        DISPLAY ENDP

CODE ENDS
    END START

调试结果和运行结果如下:

调试结果

调试结果

运行结果

运行结果

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表