编程计算((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