`
Touch_2011
  • 浏览: 287547 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

几道简单的汇编程序

阅读更多
;搜索数组,看是否存在CONST
DATA SEGMENT
	ARRAYB DB 2,3,1,8,7FH,-5
	COUNT EQU $-ARRAYB ;数组长度
	CONST EQU 7FH        ;判断数组中是否存在此元素
	ADDRES DD 0        ;若存在,存放元素的地址
	SCANTIME DW 0      ;若存在,存放搜索次数
DATA ENDS

STACK SEGMENT
	DW 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME SS:STACK,DS:DATA,CS:CODE
	MAIN:
	MOV AX,DATA
	MOV DS,AX
	MOV ES,AX ;目的串的段基址总是存放在ES
	LEA DI,ARRAYB;目的串的偏移首地址存在DI/EDI
	MOV CX,COUNT;设置循环次数
	MOV AL,CONST;数组元素与AL的内容比较
	CLD         ;设置DF标志位
	OR CX,CX    ;设置ZF=0
	REPNE SCASB ;若果不相等,则继续搜索
	JZ SCANED   ;ZF==1表示找到相等的元素
	JMP  @F     ;没找到相等的元素
SCANED:DEC DI
    MOV WORD PTR ADDRES,DI
    MOV WORD PTR ADDRES+2,ES;把元素地址存入ADDRES
    MOV BX,OFFSET ARRAYB
    INC DI
    SUB DI,BX
    MOV SCANTIME,DI;计算搜索次数
    MOV DX,SCANTIME
    ADD DX,30H
    MOV AH,2
    INT 21H
    
@@: MOV AH,4CH
    INT 21H
CODE ENDS
    END MAIN

 

 

 

 

;将ES段中名为BLOCK的字存储区清零.
DATA SEGMENT
	BLOCK DW 5 DUP(1)
DATA ENDS

STACK SEGMENT
	DB 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN:
    MOV AX,DATA
    MOV DS,AX
	MOV AX,SEG BLOCK
	MOV ES,AX
	MOV DI,0
	MOV CX,LENGTH BLOCK	
GOON:
     MOV BLOCK[DI],0  
     ADD DI,TYPE BLOCK   
     LOOP GOON 
     MOV AX,4C00H
     INT 21H
CODE ENDS
     END MAIN


	





 

 

 

;求Z=|X-Y|.其中X,Y均为无符号数
DATA SEGMENT 
	X DW 5
	Y DW 9
DATA ENDS

STACK SEGMENT
	DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME SS:STACK,DS:DATA,CS:CODE
MAIN:
   MOV AX,DATA
   MOV DS,AX
   MOV AX,X
   SUB AX,Y
   JC NEXT
   JMP DONE
NEXT:NEG AX
DONE:MOV DX,AX
     ADD DX,30H
     MOV AH,2
     INT 21H
     MOV AH,4CH
     INT 21H     
CODE ENDS
END MAIN

 

 

 

;求X与Y之和并送Z
DATA SEGMENT
;X DW 0E98AH,80AFH,0FD32H,0F68FH
;Y DW 9FD0H,70BAH,3D84H,89FEH
X DW 3 ;为了显示结果,把变量值改为3和5
Y DW 5
Z DW 5 DUP(?)
DATA ENDS

STACK SEGMENT PARA STACK 'STACK'
	DB 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN:
    MOV AX,DATA
    MOV DS,AX
    SUB DI,DI
    MOV CX,1
    CLC
GOON:MOV AX,X[DI]
     ADC AX,Y[DI]
     MOV Z[DI],AX
     ADD DI,2
     LOOP GOON
     RCL AX,1
     AND AX,1
     MOV Z[DI],AX
     ;显示结果
     MOV DL,BYTE PTR Z
     ADD DL,30H
     MOV AH,2
     INT 21H    
     MOV AH,4CH
     INT 21H
CODE ENDS
     END MAIN

 

 

;输入字符串,然后显示输入的字符串
DATA SEGMENT
	BUF DB 50
	    DB ?
	    DB 50 DUP('$');总长度为52
	CR EQU 0DH
	LF EQU 0AH
	MESG1 DB 'PLEASE INPUT A STRING:',CR,LF,'$'
DATA ENDS

STACK SEGMENT
	DW 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME SS:STACK,DS:DATA,CS:CODE
MAIN:
    MOV AX,DATA
    MOV DS,AX
    MOV DX,OFFSET MESG1
    MOV AH,9
    INT 21H;提示输入
    LEA DX,BUF
    MOV AH,10
    INT 21H ;等待输入
    
    MOV DL,LF
    MOV AH,2
    INT 21H;输出换行
    
    LEA DX,BUF+2
    MOV AH,9
    INT 21H;输出字符串
    MOV AH,4CH
    INT 21H
CODE ENDS
     END MAIN

 

 

 

;删除输入字符串中的'A'字符,然后输出删除后的字符串。
;若字符串中不存在'A',则输出'NOT FOUND'
DATA SEGMENT
	BUF DB 50,?,50 DUP('$')
	MESSAGE DB 'NOT FOUND',0AH,'$'
	FLAG DB 0
DATA ENDS
   
STACK SEGMENT
	DW 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME SS:STACK,DS:DATA,CS:CODE
MAIN:
    MOV AX,DATA
    MOV DS,AX
    MOV DX,OFFSET BUF
    MOV AH,10
    INT 21H;读入字符串
    
    MOV DL,0AH
    MOV AH,2
    INT 21H;输出换行符
    
    MOV AX,DATA
    MOV ES,AX;段地址存入ES
    LEA DI,BUF;偏移首地址
    MOV AL,'A';与'A'比较
    MOV CX,WORD PTR BUF[1];循环次数
    CLD;设置DF标志位0
GOON:    
    OR CX,CX;设置ZF=0 
    CMP [BUF+DI],AL
    JNZ NEXT;如果不同,进入下一次循环
    MOV [BUF+DI],'0'
    INC FLAG[0]
NEXT:INC DI  
    LOOP GOON
    
    OR CX,1
    CMP FLAG[0],1
    JNZ MES
    
    LEA DX,MESSAGE
    MOV AH,9
    INT 21H;没找到时输出NOT FOUND
    JMP DONE
    
MES:MOV CL,[BUF+1]
    MOV DI,OFFSET BUF+2
SIGN:OR CX,CX
    CLD
    MOV DL,[BUF+DI]
    CMP DL,'0';是0的话不输出
    JZ NO;
    MOV AH,2
    INT 21H
NO: INC DI
    LOOP SIGN;输出字符串           
    
DONE:MOV AH,4CH
    INT 21H
  
CODE ENDS
     END MAIN

  

 

 

 

;对395872843948这些0--9的数字进行冒泡排序

DATA SEGMENT
	ARRAY DB '395872843948',0DH,0AH,'$'
DATA ENDS

STACK SEGMENT
	DB 100H DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN:
    MOV AX,DATA
    MOV ES,AX
    MOV DS,AX
    MOV CX,12;要比较的次数
    MOV BX,12;每次要比较的个数
INIT:
    MOV DI,0 ;偏移首地址
    MOV BX,CX          
GOON:
    MOV AL,ARRAY[DI]
    CMP AL,ARRAY[DI+1]
    JG NEXT
    XCHG AL,ARRAY[DI+1]
    MOV ARRAY[DI],AL;交换
NEXT:INC DI
     DEC BX
     JNZ GOON;不相等
     LOOP INIT;完成一趟排序
    
     MOV DX,OFFSET ARRAY
     MOV AH,9
     INT 21H;输出排好序的序列
  
     MOV AH,4CH
     INT 21H
CODE ENDS
     END MAIN

 

0
0
分享到:
评论

相关推荐

    【最新】单片机读写U盘汇编程序-pb375

    PB375 U盘读写汇编程序 性价比超高的U盘读写模块-PB375,兼容CH375读写操作 1. 功能 ● 用于嵌入式系统/单片机读写U 盘、闪盘、闪存盘、USB 移动硬盘、USB 读卡器等。 ● 支持符合USB 相关规范基于Bulk-Only 传输...

    汇编语言课程设计答辩问题

    1、简单介绍你的课设程序中,程序由几个模块构成?简述其功能。 2、简述改变显示颜色功能如何实现? 3、简述课程设计中多个功能切换的实现? 4、简述键盘处理功能实现? 5、通过课程设计你能体会编写程序要有...

    汇编题目合集

    汇编的一些简单的题目,题目和程序代码,公13道题

    河北专接本计算机专业~计算机原理和汇编语言 复习指南

    由于汇编语言程序设计有其自身的体系和特点,我们将它作为专门的一节讨论。 一、 教学目标与考核要求 本课程的教学目标是:在学完本课后能建立起整机概念,它可分为两级: (1) CPU级,它包含三个方面:CPU基本...

    51汇编写的基于8052内核的ADuC812控制台程序

    Title: 简单的ADuC控制台(A Simple ADuC Console) Description: 使用"Windows超级终端"作为输入设备和显示终端,实现与单片机的交互式操作 Author: Liu Jianying Department: 河北科技大学 材料科学与工程学院 Date: ...

    单片机定时器汇编.doc

    我们的主程序做了灯的闪烁,就不能再干其它的事了,难 道单 片机只能这样工作吗?当然不是,我们能用定时器来实现灯的闪烁的功能。 例1:查询方式 ORG 0000H AJMP START ORG 30H START: MOV P1,#0FFH ;关所灯 MOV ...

    交通灯交通灯交通灯交通灯交通灯交通灯

    在软件程序的设计方面,本设计采用了汇编语言作为编辑语言,作为特殊车辆,采用的是外部中断0即INT0作为它的控制口,我的程序大体的分为四部分,主程序和两个子程序即显示程序和延时程序,和一个宏定义。对于定时器...

    单片机课程设计 交通灯

    在软件程序的设计方面,本设计采用了汇编语言作为编辑语言,其结构简单,语言方便,实现起来比较容易,作为特殊车辆,采用的是外部中断0即INT0作为它的控制口,外部中断1即INT1作为调节通行时间的控制口。程序大体的...

    操作系统12操作系统形成和发展.pptx

    人工操作方式 管理程序阶段 多道程序系统 管理程序是操作系统的雏形,在出现多道程序系统以后,现代操作系统才真正形成和发展。 1.2 操作系统的发展和形成 操作系统12操作系统形成和发展全文共62页,当前为第3页。 ...

    精通LINUX设备驱动程序开发

    块设备驱动程序 291 14.1 存储技术 291 14.2 linux块i/o层 295 14.3 i/o调度器 295 14.4 块驱动程序数据结构和方法 296 14.5 设备实例:简单存储控制器 298 14.5.1 初始化 299 14.5.2 块设备操作 301 14.5.3...

    VB防破解初探 CRC32 添加校验值到目标程序.rar

     就简单的一句话就交代了 ^_^我们已经写好了GetCRC32函数和GetZHI函数,两个函数返回值为字符串,当然,我们只是做测试,如果真的要,应用到软件中去,我推荐还是用浮点计算,制造隐藏剧情,甚至内联汇编处理,根据CRC32...

    PIC单片机实用教程——提高篇 pdg 李学海

    《PIC单片机实用教程——提高篇》 pdg 李学海 北京航天航空大学出版社 本书兼顾PIC全系列,共分9章,内容包括:基本概念、PIC16F877硬件概况、指令系统、汇编程序设计、集成开发环境、在线调试工具、定时器、中断...

    基于MSP430和FLASH芯片的多通道数据采集系统的开发

    利用MSP430F149单片机片内的ADC12模块和FLASH...在软件的开发中,用汇编语言开发出了利用MSP430F149单片机片内ADC12模块进行A/D转换的整个程序。结果表明:开发出的数据采集系统具有成本低、结构简单以及可靠性高等特点。

    PIC单片机选型表

    《PIC单片机实用教程-基础篇》 pdf 李学海 北京航天航空大学出版社 本书兼顾PIC全系列,共分9章,内容包括:基本概念、PIC16F877硬件概况、指令系统、汇编程序设计、集成开发环境、在线调试工具、定时器、中断逻辑...

    PIC单片机编程助手

    《PIC单片机实用教程-基础篇》 pdf 李学海 北京航天航空大学出版社 本书兼顾PIC全系列,共分9章,内容包括:基本概念、PIC16F877硬件概况、指令系统、汇编程序设计、集成开发环境、在线调试工具、定时器、中断逻辑...

    常用PIC系列8位单片机芯片引脚符号的功能

    《PIC单片机实用教程-基础篇》 pdf 李学海 北京航天航空大学出版社 本书兼顾PIC全系列,共分9章,内容包括:基本概念、PIC16F877硬件概况、指令系统、汇编程序设计、集成开发环境、在线调试工具、定时器、中断逻辑...

    浙江大学ACM题型分类

    1022 Parallel Expectations 将给定源文件编译为汇编程序 string 1023 University Entrace Examination 排序 1024 calendar game 给出一开始日期,两人按规则报下一日期,报到指定日期的人赢,求给定开始日期后,...

    单片机课程设计-数字电压表-汇编.doc

    目 录 1 引言 1 2设计原理及要求 2 2.1数字电压表的实现原理 2 2.2数字电压表的设计要求 2 3软件仿真电路设计 3 3.1设计思路 3 3.2仿真电路图 3 3.3设计过程 4 3.4 AT89C51的功能介绍 4 3.4.1简单概述 4 3.4.2主要...

Global site tag (gtag.js) - Google Analytics