汇编问题,求教(如何用循环写下面的实验~~~~~~~?)
1. 实验目的:
(1) 掌握分支程序的设计方法
(2) 掌握利用DEBUG修改参数、检查结果的方法。
(3) 掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2. 实验内容
(1) 编写一个程序,显示AL寄存器中的两位十六进制数
(2) 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3. 实验准备
(1) 编写实验内容要求的两个程序。
(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。
(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。
4. 实验步骤
(1) 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。
(2) 对其进行汇编及连接,产生.EXE文件。
(3) 对.EXE文件进行调试运行。
a. 用DEBUG调试运行,学会修改AL内容的方法。
b. 对DSPKEY.EXE键入不同的字符,分别进行调试。
c. 在MS-DOS下运行这两个.EXE文件。
5. 实验报告要求
画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
6. 参考程序清单
(1) 显示AL中两位十六进制数程序:
;DISPHEX.ASM
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,3EH
MOV BL,AL
MOV DL,AL
MOV CL,4
SHR DL,CL
CMP DL,9
JBE NEXT1
ADD DL,7
NEXT1: ADD DL,30H
MOV AH,2
INT 21H ;显示高位ASCII码
MOV DL,BL
AND DL,0FH
CMP DL,9
JBE NEXT2
ADD DL,7
NEXT2: ADD DL,30H
MOV AH,2
INT 21H ;显示低位ASCII码
MOV AH,4CH
INT 21H
CODE ENDS ;返回DOS
END START
(2) 显示键入字符程序
;DISPKEY.ASM
CODE SEGEMENT
ASSUME CS:CODE
START: MOV AH,1
INT 21H ;等待键入字符,送AL
CMP AL,0DH ;是否是回车符?
JZ DONE ;是则转DONE退出程序
CMP AL,’0’
JB NEXT
CMP AL,’9’
JA CHARUP
MOV DL,AL
MOV AH,2
INT 21H
JMP START
CHARUP: CMP AL,41H
JB NEXT
CMP AL,5AH
JA CHRDN
DISPC: MOV DL,’C’
MOV AH,2
INT 21H
NEXT: JMP START
CHRDN: CMP AL,61H
JB NEXT
CMP AL,7AH
JA NEXT
JMP DISPC
DONE: MOV AH,4CH
INT 21H
CODE: ENDS
END START