语言程序题简析.doc

例1:设内存单元DATA存放一字节无符号数,编程将其拆成两位十六进制数,并存入HEX、HEX+1的低四位。HEX单元存放低位十六进制数,HEX+1单元存放高位十六进制数。 思路:屏蔽,移位 DSEG SEGMENT DATA DB 8AH HEX DB 0,0 DSEG ENDS sseg segment stack db 100 dup(0) sseg ends CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ss:sseg START:MOV AX,DSEG MOV DS,AX MOV AL,DATA MOV AH,AL AND AL,0FH MOV HEX,AL AND AH,0F0H MOV CL,4 SHR AH,CL MOV HEX+1,AH mov ah,4ch int 21h CSEG ENDS END START 例3:利用查表的方法将1位十六进制数转换成它对应的ASCII码。 思路:查表代替数据运算 DSEG SEGMENT TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H.45H,46H HEX DB 4 ASCII DB ? DSEG ENDS sseg segment stack db 100 dup(0) sseg ends CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ss:sseg START:MOV AX,DSEG MOV DS,AX MOV BX,OFFSET TABLE MOV AL,HEX MOV AH,0 ADD BX,AX MOV AL,[BX] mov ah,4ch int 21h CSEG ENDS END START 计算 设X为单字节带符号整数,且存于DATA1单元,计算结果Y 存于DATA2单元。 DSEG SEGMENT DATA1 DB 45 DATA2 DB ? DSEG ENDS sseg segment stack db 100 dup(0) sseg ends CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ss:sseg START: MOV AX,DSEG MOV DS,AX MOV AL,DATA1 CMP AL ,0 JGE BIG MOV AL,0FFH JMP DONE BIG: JE DONE MOV AL,1 DONE:MOV DATA2,AL mov ah,4ch int 21h CSEG ENDS END START 例2、设内存中有三个互不相等的无符号字数据,分别存放在DATA开始的字单元中,编程将其中最小值存入MIN单元。 参考程序: DSEG SEGMENT DATA DW 4321H,7658H,9B00H MIN DW ? DSEG ENDS sseg segment stack db 100 dup(0) sseg ends CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ss:sseg START:MOV AX,DSEG MOV DS,AX LEA SI,DATA MOV AX,[SI] MOV BX,[SI+2] CMP AX,BX JC NEXT MOV AX,BX NEXT:CMP AX,[SI+4] JC DONE MOV AX,[SI+4] DONE:MOV MIN,AX mov ah,4ch int 21h CSEG ENDS END START 试编程,统计由DATA单元开始的数据块中负数的个数。结果存于COUNT单元中 设数据定义如下:(10分) DSEG SEGMENT DATA

文档评论(0)

1亿VIP精品文档

相关文档