8086程序功能实录_将buf1开始的100字节传送到buf2开始的单元,然后从中检索字符“#,并将此单元换成空

36 阅读1分钟

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