南邮汇编实验一

实验一

实验目的和要求

实验目的:

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值