第3周作业

    科技2022-07-10  113

    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
    Processed: 0.011, SQL: 8