吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

[复制链接]
NIMITIZ 发表于 2021-5-8 22:09
刚来吾爱破解,小小白一枚,分享一些微机原理课上自己写的8086汇编源码给和我一样的小小白,一起学习

一个涉及到程序循环和分支选择的简单程序来练练手(/ω\)。

将数据0FFH、02H、0FCBH、03H、1000H、0F3H中大于或等于0FFH的数存入以偏移地址100H为起始的内存中,小于0FFH的数存入以偏移地址200H为起始的内存中。


源码如下:
DATA SEGMENT
    NUM DW 0FFH,02H,0FCBH,03H,1000H,0F3H
    ORG 100H        ;自定义的内存空间的偏移地址起始,下同
    M DW 6 DUP(?)       ;定义一段字长为6的内存空间用于存储数值比0FFH大的数
    ORG 200H
    N DW 6 DUP(?)       ;定义一段字长为6的内存空间用于存储数值比0FFH小的数
DATA ENDS

CODE SEGMENT

    ASSUME CS:CODE,DS:DATA
   
    START:
    MOV AX,DATA
    MOV DS,AX
    MOV CX,6        ;循环执行的次数,每执行完一次循环,CX的值减1,直至CX的值变为0才退出循环
    MOV SI,0
    MOV DI,0
    MOV BP,0

    L:
    MOV BX,NUM[SI]
    MOV DX,0FFH
    CMP BX,DX       ;比较存储在BX和DX中的数的大小
    JNC L1      ;若BX中的数大于DX中的数,则直接执行L1处的指令;若BX中的数小于DX中的数,则继续顺序执行往下的指令
    MOV DX,BX       ;将小于0FFH的数(即BX中的数)送入DX,DX中原有的数0FFH将被覆写
    MOV N[DI],DX        ;将DX中的数写入内存
    INC DI      ;偏移地址加2,下同
    INC DI
    INC SI
    INC SI
    JMP L2      ;跳转至标记L2,否则将继续往下执行L1处的指令,造成程序逻辑错误

    L1:     ;当L1处的指令执行完毕后,继续往下执行L2处的指令
    MOV M[BP],BX        ;将大于0FFH的数写入内存
    INC BP
    INC BP
    INC SI
    INC SI

    L2:
    LOOP L      ;返回标记L以此循环执行,直至CX的值变为0

    MOV AH,4CH
    INT 21H

CODE ENDS

END START

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

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

本版积分规则

返回列表

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

GMT+8, 2024-11-25 17:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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