HJ汇编第六章

3.3ss-sp寄存器,栈的push,pop指令_哔哩哔哩_bilibili

3.6条件判断语句cmp,je,ja,jb及adc、sbb指令_哔哩哔哩_bilibili

5.3用栈翻转数组,动态规划求斐波那契数列_哔哩哔哩_bilibili

这章主要是逻辑运算,栈和跳转语句的问题。逻辑运算的没找到,栈的讲解视频在上面。前两个为栈和跳转基础知识,最后一个为栈的程序设计。

JE相等跳转

JNE不相等跳转

JB低于跳

JNB不低于跳

JA高于跳

JNA不高于跳

跳转直接记表。

压栈和弹栈都是一次两个字节。

 先进后出=后进先出

 65-90对应 A-Z   97-122对应 a-z  差32=20H

 pop:SP+2(先访问再+2)

PUSH :SP-2(先-2再访问)

push cx把cx存在到栈中,pop dx将刚存的数取出来给dx

设CX=1234H   DX=5678H执行后  CX=1234H DX=1234H

 

 

 

0024H 0026H  0028H  002AH

 

bd是1个字节,cx是两个字节

 

 没什么好说的。

不管CC是啥条件,只要是条件跳转都是满足就跳,不满足就继续执行

 

 有跳转了

CMP不改变寄存器的值

 

 pop:SP+2(先访问再+2)

PUSH :SP-2(先-2再访问)

 

 

 

 

 从键盘输入一个单个字符,显示该字符的ASCII码(十六进制),回车键退出循环,终止程序。

 没有用栈,有的内存变量。ascii最大就127   AL够了

DATA SEGMENT
	X DB 4 DUP("$")
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA
START:
	MOV AX,DATA
	MOV DS,AX      
	MOV AH,1            ;01指令输入一个字符存入al
	INT 21H             
	CMP AL,0DH            ;判断是不是回车,如果是就退出
	JE EXIT     
	MOV BL,AL            
	MOV BH,10            ;Al存是16进制,要转换为10进制
	MOV CX,3                ;跟输出110一样的步骤
	MOV SI,2
REPEAT1:
	MOV AH,0
	MOV X[SI],AH        ;重置为000  防止上次的结果影响这次
	DIV BH 				;AX/BH=AL......AH
	ADD AH,48
	MOV X[SI],AH
	DEC SI
	LOOP REPEAT1
	MOV DX,OFFSET X
	MOV AH,9
	INT 21H
	JMP START
EXIT:
	MOV AH,4CH
	INT 21H
CODE ENDS
END START

数据段定义如下:

DATAS SEGMENT

    DA1  DW -5,2,-1,0,4,100 DUP( 10)

    COUNT = ($-DA1)/2

DATAS ENDS

编写程序,统计变量DA1中正数的个数,并将其在屏幕上输出。

要求:

  1. 统计结果利用除10取余法转换为10进制数据输出;

  2. 利用堆栈存储余数的ASCII码;

 

DATAS SEGMENT
    DA1 DW -5, 2, -1, 0, 4, 100 DUP(10)
    COUNT = ($ - DA1) / 2
DATAS ENDS

STACKS SEGMENT
    DB 10 DUP(0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES, DS:DATAS, SS:STACKS
START:
	MOV AX,DATAS
	MOV DS,AX
	MOV AX, STACKS
    MOV SS, AX 
	MOV SP,20
	MOV CX,COUNT
	MOV SI,0
A:               
    CMP DA1[SI], 0
    JLE B
    INC BX
B:  ADD SI, 2
    LOOP A
	MOV CX,3
	MOV AX,BX           ;总数给bx
	MOV DL,10
	MOV BX,0
REPEAT1:
	MOV AH,0
	DIV DL	;AX/DL=AL......AH
	ADD AH,48
	MOV BL,AH
	PUSH BX
	LOOP REPEAT1
	MOV CX,3
REPEAT2:
	POP DX
	MOV AH,02
	INT 21H
	LOOP REPEAT2	
	MOV AH,4CH
	INT 21H
CODES ENDS
END START

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值