南邮汇编实验一

实验一

实验目的和要求

实验目的:

1. 掌握汇编语言语法格式以及汇编程序的编辑、汇编、链接和执行的开发全过程。

2. 掌握汇编语言分支,循环程序的设计。

实验要求

1. 修改一个有语法错误的汇编语言源程序。

    2. 设计汇编程序实现数据的查找、统计,代码转换及屏幕显示等功能。

改错后的代码

改错后的代码:
;FILENAME   EXA131.ASM
.486
DATA SEGMENT  USE16;SEGMENT关键词有缩写


SUM     DB  ?,?;
;用于保存结果的二进制数

;显示的字符串
MESG    DB  '25+9='
        DB  0,0,'$'

N1      DB  9,0F0H
N2      DB  25;根据N1和16行可知该数据类型为DB
DATA    ENDS

CODE    SEGMENT USE16
ASSUME  CS:CODE,DS:DATA

BEG:    
        MOV AX,DATA
        MOV DS,AX
        MOV BX,OFFSET   SUM
        ;计算N1+N2,并将结果保存到SUM处
        MOV AH,N1
        MOV AL,N2
        ADD AH,AL
        MOV [BX],AH
        ;计算N1+N2,并将结果保存到SUM处

        ;CHANG功能为转发字符串
        CALL CHANG
        ;CHANG功能为转发字符串

        ;调用DOS显示功能
        MOV AH,9
        MOV DX,OFFSET   MESG;是MESG不是MEST
        INT 21H
        ;调用DOS显示功能

        ;调用DOS退出功能
        MOV AH,4CH
        INT 21H
        ;调用DOS退出功能

CHANG:  
LAST:   

        CMP  byte ptr [BX],10;指定内存单元大小
        JC  NEXT
        SUB  byte ptr [BX],10;指定内存单元大小
        INC byte ptr [BX+7];指定内存单元大小
        JMP LAST
       
NEXT:   
        
        MOV  AH,[BX]
        MOV  [BX+8],AH
       
        ADD  byte ptr [BX+7],30H
        ADD  byte ptr [BX+8],30H
    
        RET
CODE    ENDS
END     BEG

实验二

BUF单元开始存有一个字符串(长度<255),编程实现统计该串字符中的ASCII码在42H45H之间的字符个数,并将统计结果以二进制形式显示在屏幕上。

代码:

486
DATA SEGMENT USE16
BUF     DB     'LIUJIAHAOBBBCCDEFZHMXACDF'    ; 实质: 统计BCDE的个数
COUNT   EQU    $-BUF            ; COUNT: 字符串长度
DATA    ENDS
 	
CODE SEGMENT USE16
    ASSUME CS:CODE,DS:DATA
BEG:    MOV     AX,     DATA
        MOV     DS,     AX
        MOV     BL,     0       	; BL=满足条件的字符个数,初始值为0
        MOV     SI,     0           ; BUF数组下标,初始值为0
        MOV     CX,     COUNT
        CALL    COMPARE	          	; 调用比较函数
        CALL    DISP
EXIT:   MOV     AH,     4CH
        INT     21H
    
COMPARE PROC
LAST:   CMP     BUF[SI],    42H
        JC      NEXT            	; 小于 42H, JUMP NEXT
        CMP     BUF[SI],    45H
        JA      NEXT        		; 大于 45H, jump
        INC     BL      			; 8位
NEXT:   INC     SI
        LOOP    LAST
        RET             			; 子程序返回
COMPARE ENDP
 
DISP    PROC            			; 以二进制输出,BL中存储的就是二进制
        MOV     CL,		8    		; 显示位8位
LAST:   MOV     DL,		'0'
        RCL     BL,		1  		  	; 带进位的循环左移
        JNC     NEXT    			; C=0,则跳转直接显示
        MOV     DL,		'1'
NEXT:   MOV     AH,		2
        INT     21H
        LOOP    LAST
        MOV DL, 'B'
        MOV     AH,		2
        INT     21H
        RET
DISP    ENDP
 
CODE    ENDS
        END     BEG

### 电大学汇编语言第实验 #### 实验目的 通过本次实验,学生能够掌握基本的汇编语言语法结构以及如何利用集成开发环境(IDE)编写简单的汇编程序。此外,在初次接触单片机系统的背景下,了解其内部工作原理并熟悉调试工具的应用。 #### 实验内容概述 首次实验主要集中在基础概念的学习与实践操作上。具体来说: - **安装配置Keil IDE**:确保每位同学都能顺利打开软件,并完成必要的设置以便后续项目创建和代码编辑[^2]。 - **简单指令集练习**:编写段用于验证数据传输功能的小型程序,比如实现两个寄存器之间数值交换的操作;这有助于加深对CPU执行过程的理解[^1]。 ```assembly ; Example of swapping two registers in assembly language MOV A, R0 ; Move value from register R0 to accumulator A XCHG A, R1 ; Exchange values between accumulator and another register (R1 here) MOV R0, A ; Store the exchanged result back into original source location ``` - **初步认识存储空间布局**:通过对特定地址范围内的读写测试来探索不同类型的内存区域及其访问方式,如RAM、ROM等特性差异。 #### 报告撰写指 份完整的实验报告应当包含以下几个部分: - 封面页注明个人信息及课题名称; - 正文开头简述此次学习目标和个人收获感言; - 中间主体段落详细介绍所做工作的具体内容,包括但不限于遇到的问题解决方案描述; - 结尾处总结整个过程中学到的知识要点,并对未来可能继续深入研究的方向给出建议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值