1、试编写程序,统计数据段中以BUFFER为首地址的连续200个字节单元中0的个数,并把统计结果保存到RESULT单元中。 DATA SEGMENT
BUFFER DB 200 DUP (?) RESULT DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS,AX LEA SI,BUFFER LEA DI,RESULT
MOV CX,200 MOV AL,0 MOV BL,0 NEXT:CMP BL,[SI] JNZ AA INC AL AA: INC SI LOOP NEXT MOV [DI],AL MOV AH,4CH INT 21H CODE ENDS END START
2、试编写求出两个无符号双字数据:11223344H与55667788H之和的程序。两数分别在MEM1和MEM2单元中,和放在SUM单元中.
DATA SEGMENT
MEM1 DD 1122334H MEM2 DD 55667788H SUM DD ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS,AX LEA SI,MEM1 LEA DI,RESULT LEA BX,MEM2 MOV CX,4 CLC NEXT:MOV AL,[SI] ADC AL,[BX]
MOV [DI],AL INC SI INC BX INC DI
LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START
3、试编写(近程)子程序,将BUFFER中的一个压缩BCD码的高4位和低4位分别转换为ASCII码,并按位数高低顺序存放到ANSWER开始的内存单元里。 AAA PROC
PUSH AX PUSH DI PUSH CX
MOV AL,BUFFER AND AL,0FH OR AL,30H
LEA DI,ANSWER MOV [DI],AL
MOV AL,BUFFER MOV CL,4 SHR AL,CL
AND AL,0FH OR AL,30H MOV [DI+1],AL POP CX POP DI POP AX RET
AAA ENDP
4、假设数据定义如下:用串操作指令编写程序,使其完成以下功能 DATA1 DB ‘HELLO!GOOD MORNING!’ DATA2 DB 20 DUP (?)
(1)从左到右将DATA1中的字符串传送到DATA2中。
(2)传送完后,比较DATA1和DATA2中的内容是否相同,若相同就返回DOS,若有不同则再传送一次。若都相同则返回DOS。 DATA SGMENT
DATA1 DB ‘HELLO!GOOD MORNING!’ DATA2 DB 20 DUP (?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA START:MOV AX,DATA
MOV DS,AX MOV ES,AX NEXT:LEA SI,DATA1
LEA DI,DATA2 MOV CX,20 CLD REP MOVSB
LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 REPE CMPSB JNZ NEXT
MOV AH,4CH INT 21H CODE ENDS END START