第3周作业

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值