DADATAS SEGMENT
a0 byte 5 ;等价于a0 db 5
a1 byte 12,125,6,234,123
a2 byte 'A','B','C','D',65,49,'!'
a3 word 18
a4 word 12,5,6
DATAS ENDS
根据以上数据定义,完成下列题目:
1、变量a1中有几个元素?每个元素占几个字节?a1这个变量一共占多少个字节?
2、变量a4中有几个元素?每个元素占几个字节?a4这个变量一共占多少个字节?
3、offset a0等于多少?offset a1等于多少?offset a2等于多少?
4、编写程序,将a0中的值以无符号十进制形式显示输出。
5、编写程序,用循环结构把a1中的5个数以无符号十进制形式显示输出。(次数确定的循环)
6、编写程序,将a2中的数看成字符,把这些字符显示输出,直到遇到’!'字符结束。(次数不确定的循环)
1、变量a1中有 5 个元素,每个元素占 1 个字节,a1这个变量一共占 5 个字节。
2、变量a4中有 3 个元素,每个元素占 2 个字节,a4这个变量一共占 6 个字节。
3、offset a0等于 0 ,offset a1等于 1 ,offset a2等于 6。
4、编写程序,将a0中的值以无符号十进制形式显示输出。
DATAS SEGMENT
;此处输入数据段代码
a0 byte 5
a1 byte 12,125,6,234,123
a2 byte 'A','B','C','D',65,49,'!'
a3 word 18
a4 word 12,5,6
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
核心代码:
;此处输入代码段代码
MOV SI,offset a0
MOV DL,[SI]
ADD DL,48
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
5、编写程序,用循环结构把a1中的5个数以无符号十进制形式显示输出。(次数确定的循环)
DATAS SEGMENT
;此处输入数据段代码
a0 byte 5
a1 byte 12,125,6,234,123
a2 byte 'A','B','C','D',65,49,'!'
a3 word 18
a4 word 12,5,6
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
核心代码:
;此处输入代码段代码
MOV BL,5
MOV SI,offset a1
L1:
CMP BL,0
JE OVER
MOV DL,[SI]
MOV DH,0
MOV AX,DX
MOV BH,1 ;记录入栈次数
MOV CL,10
AGAIN:
DIV CL
PUSH AX ;把余数AH和商AL一并推入栈
CMP AL,0 ;判断当前商是否为0
JE PRINT ;等于0跳去输出
ADD BH,1 ;压栈次数+1
MOV AH,0 ;让AX=AL商
JMP AGAIN ;构成循环
PRINT:
CMP BH,0
JE OVER1
POP DX ;让栈顶元素出栈
MOV DL,DH ;DH里放的余数,只输出余数就ok
ADD DL,48
MOV AH,2
INT 21H
SUB BH,1 ;每出一次栈计数器就--
JMP PRINT ;构成循环
OVER1:
ADD SI,1
SUB BL,1
JMP L1
OVER:
MOV AH,4CH
INT 21H
CODES ENDS
END START
6、编写程序,将a2中的数看成字符,把这些字符显示输出,直到遇到’!'字符结束。(次数不确定的循环)
DATAS SEGMENT
;此处输入数据段代码
a0 byte 5
a1 byte 12,125,6,234,123
a2 byte 'A','B','C','D',65,49,'!'
a3 word 18
a4 word 12,5,6
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
核心代码:
;此处输入代码段代码
MOV SI,offset a2
GETAGAIN:
MOV AL,[SI]
CMP AL,'!'
JE OVER
MOV DL,AL
MOV AH,2
INT 21H
ADD SI,1
JMP GETAGAIN
OVER:
MOV AH,4CH
INT 21H
CODES ENDS
END START