河北工业大学汇编语言程序设计实验二
2-4
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STAR DB '* $' ;定义输出时需要用到的*,换行
N DB 13,10,'$'
I DW 0
J DW 0 ;定义用于控制行列输出的变量I,J
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AH,01H ;输入需要打印的三角形的行数
INT 21H
SUB AX,130H
MOV I,AX
MOV J,AX
MOV DX,OFFSET N ;打印三角形开始前先输出一个换行符
MOV AH,09H
INT 21H
MOV CX,I
L1: ;第一层循环
MOV I,CX
MOV CX,J
L2:
MOV DX,OFFSET STAR ;在内层循环里打印*号
MOV AH,09H
INT 21H
LOOP L2
MOV BX,J ;调整打印*号的数目
SUB BX,1
MOV J,BX
MOV CX,I ;还原外层循环CX
MOV DX,OFFSET N ;打印换行符
MOV AH,09H
INT 21H
LOOP L1
MOV AX,4C00H
INT 21H
CODE ENDS
END START
2-5
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
BUF DW 0F000H,0F000H,0F000H,0D00H,0001H ;预先设计好需要求和的五个数,最终和大于FFFFH
RESULT DW 2 DUP (0)
X DW 0
Y DW 0
STR DB '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV DX,0
CALL QIUHE ;进入求和子程序
CALL SHUCHU ;进入输出子程序
MOV AX,4C00H
INT 21H
;*************************************************
QIUHE:
MOV CX,5
MOV DI,OFFSET BUF ;找到需要求和的数组的首地址
MOV BX,0
QIUHE1:
ADD AX,[BX+DI]
ADC DX,0 ;使用带进位的ADC操作记录溢出的最高位
ADD BX,2
MOV RESULT,AX ;每进行一次求和更新一次RESULT
MOV RESULT+2,DX
LOOP QIUHE1
RET
;*************************************************
SHUCHU:
MOV CX,4
MOV AX,RESULT+2
SHUCHU1: ;输出高四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU1
MOV CX,4
MOV AX,RESULT
SHUCHU2: ;输出低四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU2
MOV DL,'H'
MOV AH,02H
INT 21H
RET
;***********************************************
CODE ENDS
END START