南邮|汇编程序语言设计实验一

1.下面给出的是一个通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。 要求实验者按照原样对源程序进行编辑,汇编后,根据MASM给出的错误信息对源程序进行修改,直到没有语法错误为止。然后进行链接,并执行相应的可执行文件。正确的执行结果是在屏幕上显示:25+9=34

.486
DATA SEGMENT USE16
SUM  DB  ?,?
MESG DB '25+9='
     DB  0,0,'$'  
N1  DB  9,0F0H
N2  DW 25
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:       
MOV AX,DATA
    MOV DS,AX
    MOV BX,OFFSET SUM
    MOV AH,N1
    MOV AL,BYTE PTR N2
    ADD AH,AL
    MOV [BX],AH
    CALL CHANG
    MOV AH,9
    MOV DX,OFFSET MESG
    INT 21H
    MOV AH,4CH
    INT 21H
CHANG PROC
LAST: 
	CMP BYTE PTR [BX],10
    JC   NEXT
    SUB BYTE PTR [BX],10
    INC BYTE PTR [BX+7]
    JMP LAST
NEXT: 
	 MOV CL,SUM
    ADD [BX+8],CL
    ADD BYTE PTR [BX+7],30H
    ADD BYTE PTR [BX+8],30H
    RET
CHANG ENDP
CODE   ENDS
END    BEG

2.BUF单元开始存有一字符串(长度< 255 ),编程实现统计该串字符中的ASCII码在 42H~45H之间的字符个数,并将统计结果以二进制形式显示在屏幕。

.586
DATA SEGMENT USE16
BUF DB '123ABC456xyz'
LL = $-BUF
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:
   MOV AX,DATA
MOV DS,AX
	CALL COMPUTE ;计算该字符串中ASCII码在 42H~45H之间的字符个数
	CALL DISP; 以二进制形式显示在屏幕
	MOV AH,4CH
	INT 21H
COMPUTE PROC
	MOV DL,0
	MOV CX,LL
LEA BX,BUF
LAST:
	CMP BYTE PTR [BX],'B'
	JC NEXT
	CMP BYTE PTR [BX],'E'
	JA NEXT
	INC DL
NEXT:
	INC BX
	LOOP LAST 
	RET
COMPUTE ENDP	
DISP PROC
	MOV BL,DL
	MOV CX,8
LAST:
	MOV DL,'1'
	SAL BL,1
	JC NEXT
	MOV DL,'0'
NEXT:
	MOV AH,02H
	INT 21H
	LOOP LAST
	RET
DISP ENDP 
CODE ENDS
END BEG

你可能感兴趣的:(汇编,开发语言)