X DW 0 Y DW 0 Z DW 0 V DW 0
W DW 2 DUP(0) DATA ENDS
STACK SEGMENT DB 200 DUP(0) STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
Start:
MOV AX,DATA MOV DS,AX MOV DX,OFFSET DAI1 MOV AH,09H INT 21H
INPUT: MOV CH,04H MOV DI,OFFSET X
DU04: MOV DX,OFFSET DAI2 MOV AH,09H INT 21H
MOV DX,OFFSET BUF MOV AH,0AH INT 21H
MOV CL,BUF[1] DEC CL MOV AX,0 MOV SI,3
H1: MOV BX,10 MUL BX MOV BL,BUF[SI]
SUB BL,30H ADD AX,BX INC SI DEC CL JNZ H1
CMP BUF[2],'-' JNE NONEGX NEG AX
NONEGX: MOV [DI],AX INC DI INC DI DEC CH
JNZ DU04
MOV DX,OFFSET DAI3 MOV AH,09H INT 21H
MOV AX,X CALL SHOW MOV DL,',' MOV AH,02H INT 21H
MOV AX,Y CALL SHOW MOV DL,',' MOV AH,02H INT 21H
MOV AX,Z CALL SHOW MOV DL,',' MOV AH,02H INT 21H
MOV AX,V CALL SHOW
MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX SUB CX,540 SBB BX,0 MOV AX,V CWD SUB AX,CX SBB DX,BX IDIV X MOV W,AX MOV W+2,DX MOV DX,OFFSET DAI4 MOV AH,09H INT 21H MOV AX,W CALL SHOW MOV DX,OFFSET DAI5 MOV AH,09H INT 21H MOV AX,W+2 CALL SHOW MOV AH,4CH INT 21H
SHOW:
CMP AX,0 JG LOOP1 PUSH AX MOV DL,'-' MOV AH,02H INT 21H POP AX NEG AX
LOOP1: XOR CX,CX MOV BX,10 Q0:XOR DX,DX DIV BX
OR DX,0E30H PUSH DX INC CX CMP AX,0 JNE Q0 Q1:POP AX INT 10H LOOP Q1 RET
CODE ENDS END START
三、实验体会
这次实验的难点主要在于各个数的输入与输出,汇编的数字输入要考虑很多问题,比如有符号数与无符号数,这对于不熟悉汇编的我们相对较难。
实验五循环程序设计
组长:谭浩敏组员:刘赏源、陈润强
【实验目的】:
1. 学会思考程序的不足,并找出改进办法。 2. 熟悉使用DOS和BIOS功能调用。 3.掌握汇编语言循环程序的编写。
【实验内容】:
1. “第3章(3)汇编程序设计.ppt”中的作业。
2.参考“第3章(3)汇编程序设计.ppt”关于排序的程序并完善和修改完成如下功能程序:能通过键盘随机地输入几个数据(16位有符号数),然后进行从小到大进行排序,最后结果显示在屏幕上。
DATA
SEGMENT
DAI1 DB 0AH,0DH,'Please type in the number:$' DAI2 DB 0AH,0DH, 'The sort is:',0AH,0DH,'$'
BUF DB 10
DB 0 NUM DB 200 DUP(0) buf1 DW 10 dup(0) N EQU 4
DATA ENDS
STACK SEGMENT
DB 200 DUP(0) STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
Start:
MOV AX,DATA MOV DS,AX
INPUT: MOV CH,N MOV DI,OFFSET buf1
DU04: MOV DX,OFFSET DAI1
MOV AH,09H INT 21H
MOV DX,OFFSET BUF ;键盘输入四个数 MOV AH,0AH INT 21H
MOV CL,BUF[1] DEC CL MOV AX,0 MOV SI,3
H1: MOV BX,10 MUL BX MOV BL,BUF[SI]