现在的位置: 首页 > 综合 > 正文

8086程序功能实录

2018年03月20日 ⁄ 综合 ⁄ 共 3182字 ⁄ 字号 评论关闭

编程计算((X+Y)*10)+Z)/X,X、Y、Z都是16位无符号数,结果存在RESULT开始的单元

DATAS SEGMENT

    ;此处输入数据段代码 

    xequ 1

    yequ 1

    zequ 2

   SUM DW  ?,?

DATAS ENDS

CODES SEGMENT

   ASSUME CS:CODES,DS:DATAS

START:

   MOV AX,DATAS

   MOV DS,AX

    ;此处输入代码段代码

   MOV DX,0

MOVAX,x

 

 

   ADD AX,y

   ADC DX,0H

   MOV BX,0AH

   MUL BX

   ADD AX,z

   ADC DX,0H

   MOV BX,x

   DIV BX

   MOV SUM,AX

   MOV SUM+2,DX

   MOV AH,4CH

   INT 21H

CODES ENDS

ENDSTART


XLAT功能:


DATASSEGMENT

    ;此处输入数据段代码 

    STRING DB 0,1,2,3,4,5

    COUNT EQU $-STRING

DATASENDS

CODESSEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AX,DATAS

MOVDS,AX

    ;此处输入代码段代码

    mov BL,STRING

    MOV AL,3

    XLAT

    MOV AH,4CH

    INT 21H

CODESENDS

    END START

    DATASSEGMENT


    ;此处输入数据段代码 

   ARRAY DW 0,1,1,2,2,2

   COUNT DW ($-ARRAY)/2

   SUM DW ?,?

DATASENDS

累加数组中的元素,将和存于SUM开始单元


DATASSEGMENT

    ;此处输入数据段代码 

    ARRAY DW 0,1,1,2,2,2

    COUNT DW ($-ARRAY)/2

    SUM DW ?,?

DATASENDS

CODESSEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AX,DATAS

    MOV DS,AX

    ;此处输入代码段代码

    XOR AX,AX

    MOV SI,OFFSET ARRAY

    MOV CX,COUNT

   lp: ADD AX,[SI]

       ADC DX,0H

       INC SI

       LOOP lp

       MOV SUM,AX

       MOV SUM+2,DX

    MOV AH,4CH

    INT 21H

CODESENDS

    END START


从给定串中寻找最大值,并放到MAX单元,元素放在BUFFER开始的字节单元中

DATASSEGMENT

    ;此处输入数据段代码

    BUF DB 0,1,2,3,4,5,13,7,8

    COUNT EQU $-BUF

    MAX DB ?

DATASENDS

CODESSEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AX,DATAS

    MOV DS,AX

    ;此处输入代码段代码

    MOV CX,COUNT

    LEA SI,BUF

    MOV AL,0 ;第一个数哦

   lp: CMP AL,[SI]

       JNB NEXT ;如果al是大值,就跳过

       MOV AL,[SI]

    NEXT: INC SI

          LOOP lp

          MOV MAX,AL

    MOV AH,4CH

    INT 21H

CODESENDS

    END START

编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。

DATASSEGMENT  ;此处输入数据段代码 

    OLD DB 1,2,3,4

    NEW DB 1,2,3,'A'

    COUNT EQU $-NEW

    RESULT DB 0

DATASENDS

CODESSEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AX,DATAS

    MOV DS,AX

    ;此处输入代码段代码

    MOV SI,OFFSET OLD

    MOV DI,OFFSET NEW

    MOV CX,COUNT

   lp:MOV AL,[SI]

      CMP AL,[DI]

      JNZ NOEQU

      INC SI

      INC DI

      LOOP lP

      MOV AL,0

      JMP OUTPUT

   NOEQU:MOV AL,0FFH

   OUTPUT:MOV RESULT,AL

    MOV AH,4CH

    INT 21H

CODESENDS

    END START

将BUF1开始的100字节传送到BUF2开始的单元,然后从中检索字符“#”,并将此单元换成空格字符。

DATASSEGMENT

    ;此处输入数据段代码

    first DB 0,1,2,3,2,5

    COUNT EQU $-first

    second DB COUNT DUP(?) 

DATASENDS

CODESSEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AX,DATAS

    MOV DS,AX

    ;此处输入代码段代码

    MOV SI,OFFSET first

    MOV DI,OFFSET second

    mov cx,COUNT

   lp: MOV AL,[SI]

         MOV [DI],AL

         INC SI

         INC DI

         LOOP lp

   START2:

       MOV BX,OFFSET second

       mov CX,COUNT

       MOV AL,2

      lp2: CMP AL,[BX]

           JNZ NEXT

           MOV BYTE PTR[BX],9;将数组中2全部替换为9

      NEXT: INC BX

           LOOP lp2

    MOVAH,4CH

    INT 21H

CODESENDS

    END START

冒泡排序功能

DATAS SEGMENT
    ;此处输入数据段代码
    BUF DB 6,4,2,87,0,3,1,8,5,9  
    COUNT EQU $-BUF
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    MOV DX,COUNT-1
   SORT1:  MOV BL,0
           MOV SI,OFFSET BUF
           MOV CX,DX
   SORT2:  MOV AL,[SI]
              CMP AL,[SI+1]
              ;JNA NOXHG
              JNB NOXHG
              XCHG AL,[SI+1]
              XCHG AL,[SI]
              MOV BL,0FFH
   NOXHG:  INC SI
              LOOP SORT2
              DEC DX
              CMP BL,0
              JNE SORT1
               MOV AH,4CH
            INT 21H
   
CODES ENDS
    END START

org1000h

    MOV BX,OFFSET BUF

    MOV AL,BUF+1

    MOV DS,WORD PTR[BX]

    MOV CX,COUNT

moval,5

movBYTE PTR[SI],al

------------------

MOVAX,5   PUSH AX

    MOV AX,15  POP AX

抱歉!评论已关闭.