汇编语言 实验五 条件转移指令
一、实验目的:
1.8088指令:JZ,JNZ,JC,JNC,CMP,SHR。
2.程序:用字符搜索法确定字符串长度。
3.程序:16进制数化为ASCII码的一般方法。
二、实验准备
1.
(1) 编写实验任务要求的两个程序。
(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。
(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。
2.验证以下程序
16进制数化ASCII码的一般方法(显示内存内容)
1)用A命令在100H处键入下列程序:
MOV SI,0
MOV BL,10
LOP: MOV DL,[SI]
MOV CL,4
SHR DL,CL
CMP DL,0A
JC J1
ADD DL,7
J1: ADD DL,30
MOV AH,2
INT 21
MOV DL,[SI]
AND DL,0F
CMP DL,0A
JC J2
ADD DL,7
J2: ADD DL,30
MOV AH,2
INT 21
MOV DL,20
MOV AH,2
INT 21
INC SI
DEC BL
JNZ LOP
INT 20
2)用N,W命令将此程序用CC.COM文件名存入磁盘。
3)用Q命令退出DEBUG。
4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。
三、实验任务
1.自编程序:修改实验准备程序(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用’.'代替。
2. BUFX、BUFY和BUFZ是3个有符号的十六进制数,编写一个比较相等关系的程序:
1)如果这3个数都不相等,则显示0
2)如果这3个数中有两个数相等,则显示1
3)如果这3个数都相等,则显示2
四、实验步骤
1) 用EDIT或其它编辑软件,编写.ASM源程序,
2) 对其进行汇编及连接,产生.EXE文件。
3) 对.EXE文件进行调试运行。
a. 用DEBUG调试运行。
b. 键入不同的字符,分别进行调试。
c. 在MS-DOS下运行这两个.EXE文件。
五、实验报告要求:
1.先完成准备实验
2.务2要求画出流程图,给出程序清单,给出调试结果,并存盘
3.实验体会。
实验内容代码:
1、
DATA SEGMENT
DATA ENDS
STACKS SEGMENT STACK
STACKS ENDS
CODE SEGMENT 'code'
ASSUME CS:CODE,DS:DATA,SS:STACKS
START:
MOV AX,DATA
MOV DS,AX
MOV SI,0H
MOV BL,10H
LOP:MOV DL,[SI]
MOV CL,4H
SHR DL,CL
CMP DL,0AH
JC J1
ADD DL,7H
J1: ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,[SI]
AND DL,0FH
CMP DL,0AH
JC J2
ADD DL,7H
J2: ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,20H
MOV AH,2H
INT 21H
MOV DL,[SI]
MOV DH,06H
CMP DH,[SI]
JNC J3
MOV DH,0eH
CMP [SI], DH
JNC J3
MOV DL,2EH
J3: MOV AH,2H
INT 21H
MOV DL,20H
MOV AH,2H
INT 21H
INC SI
DEC BL
JNZ LOP
MOV ax,4C00H
INT 21H
CODE ENDS
END START



2、
DATA SEGMENT
DATA ENDS
STACKS SEGMENT STACK
STACKS ENDS
CODE SEGMENT 'code'
ASSUME CS:CODE,DS:DATA,SS:STACKS
START:
MOV AX,DATA
MOV DS,AX
mov ah, 01h
int 21h
mov bh, al
mov dl,20h
mov ah,02h
int 21h
mov ah, 01h
int 21h
mov bl, al
mov dl,20h
mov ah,02h
int 21h
mov ah, 01h
int 21h
mov dh, al
mov dl,0ah
mov ah,02h
int 21h
mov dl, 30h
cmp bh,bl
jnz next1
inc dl
next1: cmp bh,dh
jnz next2
inc dl
next2: cmp bl,dh
jnz next3
inc dl
next3: cmp dl,33h
jb next4
mov dl,32h
next4: mov ah,02h
int 21h
MOV ax,4C00H
INT 21H
CODE ENDS
END START



