1.1 程序修改
.486
DATA SEGMENT USE16
SUM DB ?,?
MESG DB '25+9='
DB 0,0,'$'
N1 DB 9,0F0H
N2 DB 25
DATA ENDS
CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET SUM
MOV AH,N1
MOV AL,N2
ADD AH,AL
MOV [BX],AH
CALL CHANG
MOV AH,9
MOV DX,OFFSET MESG
INT 21H
MOV AH,4CH
INT 21H
CHANG PROC
LAST: CMP BYTE PTR [BX],10 JC NEXT
SUB BYTE PTR[BX],10
INC BYTE PTR [BX+7]
MOV AH, BYTE PTR[BX]
JMP LAST
NEXT: MOV DX,WORD PTR SUM ADD [BX+8],DX
ADD BYTE PTR [BX+7],30H
ADD BYTE PTR [BX+8],30H RET
CHANG ENDP
CODE ENDS
END BEG
2.3.4从数据段NUM单元开始存有9个有符号数,并编写一个程序实现:找出最小值存放到数据段MIN单元,并将负数的个数以十进制的形式显示在屏幕上。
.486
DATA SEGMENT USE16
NUM DB -8,-44,-88,-37,2,-1,8,-26,-18
MIN DB ?
AB DB '0'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE , DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET NUM
MOV CH,0
MOV CL,9
AGAIN: CMP BYTE PTR [BX] ,0
JG NEXT1
INC AB
CMP BYTE PTR [BX], CH
JG NEXT1
MOV CH,BYTE PTR [BX]
NEXT1: INC BYTE PTR BX
DEC CL
JNE AGAIN
MOV MIN,CH
MOV AH,2
MOV DL,AB
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
.486
DATA SEGMENT USE16
BUF1 DB '123456'
BUF2 DB '000000'
BUF3 DB 'Please input communication words:',0DH,0AH,'$' BUF4 DB 3
OUT1 DB 'ERRORS',0DH,0AH,'$'
OUT2 DB 'RIGHT',0DH,0AH,'$'
OUT3 DB '*','$'
OUT4 DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AH,00H
MOV AL,3
INT 10H
LAST1:LEA SI,BUF1
LEA DI,BUF2
MOV BX,OFFSET BUF2
MOV CX,6
MOV AH,09H
LEA DX,BUF3
INT 21H
LAST: MOV AH,07H
INT 21H
MOV BYTE PTR [BX],AL
INC BX
MOV AH,09H
MOV DX,OFFSET OUT3
INT 21H
LOOP LAST
MOV AH,09H
LEA DX,OUT4
INT 21H
MOV CX,6
CLD
REPE CMPSB
JZ EXIT
MOV AH,09H
LEA DX,OUT1
INT 21H
DEC BUF4
JZ LAST2
JMP LAST1
EXIT: MOV AH,09H
LEA DX,OUT2
INT 21H
LAST2:MOV AH,4CH
INT 21H
CODE ENDS
END BEG。