文章目录
前言一、运行程序二、理解程序1.初始赋值2.除法运算3.压栈和出栈4.条件转移指令5.JMP指令
总结
前言
本次实验课要求,AX为2559,在屏幕上输出2559。每个数字以字符的形式输出,即分别输出‘2’,‘5’,‘5’,‘9’。
一、运行程序
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS
:CODES
,DS
:DATAS
,SS
:STACKS
START
:
MOV AX
,DATAS
MOV DS
,AX
;此处输入代码段代码
;对AX赋值为
2559,CL为
10,BX计数
MOV AX
,2559
MOV CL
,10
MOV BX
,0
L0
:
;除法运算,压栈,判断AL是否为
0,为
0则跳到L1
DIV CL
PUSH AX
ADD BX
,1
MOV AH
,0
CMP AL
,0
JE L1
JMP L0
L1
:
;输出,出栈
CMP BX
,0
JE OVER
POP CX
MOV DL
,CH
ADD DL
,48
MOV AH
,2
INT
21H
SUB BX
,1
JMP L1
OVER
:
MOV AH
,4CH
INT
21H
CODES ENDS
END START
二、理解程序
1.初始赋值
MOV AX
,2559
MOV CL
,10
MOV BX
,0
为AX赋值初始值为2559,CL赋值为10,BX赋值为0 其中AX表示需要输出的数据 CL表示除数,接下来需要使用AX除以CL求出对应的商和余数 BX用于记录压栈的次数
2.除法运算
DIV CL
在汇编语言中,除法运算使用DIV,且固定为AX被除,AL中放置运算结束的商,AH放置运算结束的余数 AX÷CL=AL…AH
3.压栈和出栈
PUSH AX
POP CX
可以使用PUSH和POP对数据进行出栈和入栈操作。
4.条件转移指令
CMP AL
,0
JE L1
比较AL和0,如果AL=0,那么就跳转到L1 条件转移指令Jcc中的cc表示利用标志判断的条件,一共有16种
助记符中文说明
JZ/JE等于0/相等JNZ/JNE不等于0/不相等JS符号为负JNS符号为正JP/JPE“1”的个数为偶数JNP/JPO“1”的个数为奇数JO溢出JNO无溢出JC/JB/JNAE进位/低于/不高于等于JNC/JNB/JAE无进位/不低于/高于等于JBE/JNA低于等于/不高于JNBE/JA不低于等于/高于JL/JNGE小于/不大于等于JNL/JGE不小于/大于等于JLE/JNG小于等于/不大于JNLE/JG不小于等于/大于
5.JMP指令
JMP L0
跳转到L0
总结
没什么好总结的。