实验代码2如下:(32.ASM 32.OBJ 32.EXE) DATA SEGMENT Y DW 20D DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX MOV CX,Y MOV AX,0 MOV BX,0 L1:
INC BX ADD AX,BX CMP BX,20 JNZ L1 MOV DX,AX MOV AH,2 INT 21H CODE ENDS END START 运行结果2如下:(实验结果存于DX 寄存器中)
4、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
assume cs:code start: mov ah,1 int 21h cmp al,0dh je exit cmp al,'0'
jb start cmp al,'9' jbe output1 cmp al,'A' jb start cmp al,'Z' jbe output cmp al,'a' jb start cmp al,'z' jbe output
output1: mov dl,al mov ah,2 int 21h jmp start
output:mov ah,02h mov dl,'c' int 21h jmp start
exit: mov ah,4ch int 21h code ends end start 运行结果如下:
5、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。
实验代码如下:(5.ASM 5.OBJ 5.EXE)BX寄存器中的测试数据位3132H CODE SEGMENT ASSUME CS:CODE START:
MOV BX,6162H SUB BX,2020H MOV DL,BL MOV AH,02 INT 21H MOV BL,BH MOV DL,BL MOV AL,02 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 运行结果如下图:
6、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。 实验代码如下:(6.ASM 6.OBJ 6.EXE)测试数据为1EH,3DH,34H,98H DATA SEGMENT
ADDR DB 1EH,3DH,34H,98H DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA
MOV DS,AX MOV SI,0
MOV DI,OFFSET ADDR STEP:
MOV AL,[DI] ADD DI,1 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码 INC SI CMP SI,4 JNZ STEP
MOV AH,4CH ;返回DOS INT 21H
CODE ENDS END START 运行结果如下:
四、实验心得体会
本次实验主要是循环结构的程序。通过本次实验,学习汇编语言中循环结构类型的程序的编辑、编译与连接,更好的掌握分支程序的结构。
通过本次实验,我对循环结构有了一定的理解,尤其是LOOP循环指令,对于cmp指令和JZN、JZ等指令也有了一定的了解
实验过程是一个不断探索和实践,发现错误和改正错误的一个过程。而在实验四这个试验中,首先,要解决的问题是熟悉和了解汇编语言中分支结构的内容。在完成实验内容的过程中,由于还是处于摸索过程中,所以刚开始的进度很慢,是对着实验过程,一步一步的执行,还要不时的进行截图。但,熟能生巧,到后来的实验就进行的比较快。
通过本次实验,掌握了汇编语言中循环结构这一部分的内容,通过上级实验,更好的理解我们在课本上看到的循环结构的内容,让我们在实验中更深一步的理解和应用。