执行int 21h后sp怎么变

执行int 21h后sp怎么变,第1张

你说的执行int 21h后sp怎么变吧,执行int 21h后IP变为0000H。

int21H是DOS功能调用,有近上百个功能如01H、07H和08H—从标准输入设备输入字符02H—字符输出03H—辅助设备的输入04H—辅助设备的输出05H—打印输出06H—控制台输入/输出09H—显示字符串0AH—键盘缓冲输入0BH—检测输入状态0CH—清输入缓冲区的输入功能。

所以,调用INT21H后当然还会执行程序但4C是结束程序,也就是说当AH=4CH,调用INT21H后,程序就结束了,后面的就不会执行了。

将片内RAM的20H,21H,22H单元的内容依次存入片外RAM的20H,21H,22H中:

MOV R0,#20H

MOV R1,#03H;用于控制循环次数

MOV DPTR,#20H

LOOP:

MOV A, @R0

MOVX @DPTR , A

INC R0;片内RAM地址加一

INC DPTR;外部RAM地址加一

DJNZ R1,LOOP;未循环完3次,跳回继续移数值

SJMP $;停止

END

编程将片外RAM的1000H单元开始的100个字节的数据相加,结果存放于R7R6中:

MOV R6, #0

MOV R7, #0

CLR C;必须先将CY(进位标志)清零

MOV DPTR, #1000H

MOV R2, #100

LOOP:

MOVX A, @DPTR

ADD A, R6

MOV R6, A;存储低8位

JC ADD2;CY为一的话,跳转到ADD2,使R7加一(即低8位有进位的话,高8位要加一)

INC DPTR

DJNZ R1, LOOP

SJMP $

ADD2:

INC R7;R7存储高8位

RET

END

嘿嘿 俺有正确答案

楼上作的答案有问题呀 不可以使用减法指令 作比较的 减法指令执行时 将改变 *** 作数的数值

应该使用专用的比较指令 即 JCNE,A,direct,rel;

可以将20H定义成一个装最大数的单元即MAX单元。

参考程序如下:

MAX DATA 20H

ORG 0000H

JMP MAIN

ORG 0100H

MAIN: MOV R0,#21H

MOV R6,#20H

MOV A,@R0 ; 先将第一个数当成最大者,送给MAX单元

MOV MAX,A

LOOP: INC R0

MOV A,@R0

CJNE A,MAX,LL1

LL1: JNC LL2

MOV MAX,A; 将大数放入MAX单元保存

LL2: DJNE R6,LOOP

SJMP $

呵呵 满意 就给加分喽

以上就是关于执行int 21h后sp怎么变全部的内容,包括:执行int 21h后sp怎么变、试编一段程序,将片内RAM的20H,21H,22H单元的内容依次存入片外RAM的20H,21H,22H中。、在内部RAM的21H单元开始存有一组无符号数,数据长度为21H,编写程序,要求找出最大数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9337459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存