1. 编一程序,实现:显示A到z 26个字母
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV CX,26
MOV BL,'A'
MOV AH,02H
A1: MOV DL,BL
INT 21H
INC BL
LOOP A1
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.编一程序,实现:数据区的0号单元到15号单元 分别存0到15这15个数
DATA SEGMENT
dw 12,34,56
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV ax,data
MOV ds,AX
xor bx,bx
mov cx,0016
mov al,00
Lop: mov [bx],al
inc al
daa
inc bx
loop lop
int 20h
CODE ENDS
END START
3.编写一个加法程序:1325+9839
要求:用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。
DATA SEGMENT
DATA1 DB '5','2','3','1'
DATA2 DB '9','3','8','9','0'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 64 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START PROC FAR
PUSH DS
MOV AX,00H
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;初始化程序
CLD ;DF=0,为正向串
LEA SI,DATA1;取1352的OFFSET
LEA DI,DATA2;取9839的OFFSET
MOV CX,04H ;计算计算次数
MOV AX,00H ;将暂存标志寄存器的内容AH寄存器清0
LOOP1:
LODS DATA1 ;取串操作,[SI]->AL,SI+1->SI
SAHF ;AH中内容送标志REG
ADC AL,[DI] ;将操作数带进位加法
AAA ;ASCII码运算的十进制加法调整
LAHF ;FLAG REG内容暂存AH中
OR AL,30H ;ASCII——>AL
STOSB ;存串操作,AL-[DI],DI+1->DI
LOOP LOOP1 ;循环
AND AH,01H ;CARRY FLAG->AH
OR AH,30H ;最高位进位为ASCII
MOV [DI],AH ;并送到DATA2的最后一个字符串
MOV AH,02H ;DOS中断02H
MOV CX,05H ;显示数据位CX
LOOP2: ;
MOV DL,[DI] ;显示数据送到DL
INT 21H ;
DEC DI ;
LOOP LOOP2 ;
RET ;
CODE ENDS ;
END START ;
4.编一程序,将DATA数据区内10个16位有符号二进制数由小到大排序,结果存放到原数据区。
DATA SEGMENT
DW 6666H,7777H,8888H,9999H,0AAAAH,0BBBBH,0CCCCH,0DDDDH,0EEEEH,0FFFFH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,9
L1:
MOV DX,CX
MOV BX,0
L2:
MOV AX,[BX]
INC BX
INC BX
CMP AX,[BX]
JLE DONE
XCHG [BX],AX
DEC BX
DEC BX
MOV [BX],AX
INC BX
INC BX
DONE:
DEC DX
JNE L2
LOOP L1
MOV AX,4C00H
INT 21H
CODE ENDS
END START