关于汇编程序的分析
发布网友
发布时间:2024-02-25 01:10
我来回答
共2个回答
热心网友
时间:2024-08-24 05:36
呵呵,闲着没事干,帮你一下吧。不懂再问吧。就这么多了。
DSEG SEGMENT 数据段定义
DATA1 DB 35H 存35H
DATA2 DB 29H 存29H
DSEG ENDS
CSEG SEGMENT 代码段定义。
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX 把数据段首址给ds即数据段寄存器
MOV AL,DATA1 把35H给aH的低八位
ADD AL,DATA2 35H与29H相加 =5Eh
PUSH AX 把aH入栈
MOV CL,4
SHR AL,CL 右移四位。即把AL高四位与低四位对调。E5h
ADD AL,30H AL加30h =15H,同时产生次进位
CMP AL,39H 把al与39H相减,只改变标志位,
JBE OK1 不高于,跳转到OK1 ,
ADD AL,07H
OK1: MOV DL,AL dl=15h
MOV AH,2 ah=2 功能号
INT 21H 系统功能调用,2号功能,把al显示
POP AX 出栈
AND AL,0FH 与,取低八位,即 0eh。
ADD AL,30H =3EH
CMP AL,39H
JBE OK2 高于,不跳转
ADD AL,07H. 3E+07=45H
OK2: MOV DL,AL
MOV AH,2
INT 21H 把al显示
MOV AH,4CH
INT 21H 程序结束,且无返回值。
CSEG ENDS
END START
热心网友
时间:2024-08-24 05:40
DSEG SEGMENT;数据段
DATA1 DB 35H;变量,
DATA2 DB 29H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG;定位寄存器
START:MOV AX,DSEG
MOV DS,AX;把数据地址传给ds寄存器
MOV AL,DATA1把data1传给al
ADD AL,DATA2;取与运算然后存到给al
PUSH AX;ax入stack
MOV CL,4
SHR AL,CL
ADD AL,30H
CMP AL,39H
JBE OK1
ADD AL,07H
OK1: MOV DL,AL
MOV AH,2
INT 21H
POP AX
AND AL,0FH
ADD AL,30H
CMP AL,39H
JBE OK2
ADD AL,07H.
OK2: MOV DL,AL
MOV AH,2
INT 21H;21号中断
MOV AH,4
INT 21H
CSEG ENDS
END START