在汇编程序中,如果程序跳转到最后一句这时程序如何运行

在汇编程序中,如果程序跳转到最后一句这时程序如何运行,第1张

你是想问怎么跳到程序“最后”吧?

在DEBUG中加载程序以后,用U命令查看程序代码,找到最后结束点(一般是4CH号功能调用所用的INT

21H指令),用G命令设置断点运行,断点设在这个结束点上。

例如,最后那一条INT

21指令的偏移地址是

0123,那么用

G

0123

就可以了(注意在G和0123之间有空格)。

G命令的格式是:

G[=开始点]

[断点1]

[断点2]

……

方括号中内容为可选项。

若不用=加上开始点,则从当前IP开始执行。

在断点地址前面注意要有空格。

不指定断点,则运行到程序结束退出为止(或死机出错为止

:-)

除法,是经常发生溢出的。

并不一定是除以零。

16 位数的除法,是:两个字节,除以一个字节,

商,必须是一个字节,余数是一个字节。

但是,2D 2FH / 02H,商,却是两个字节,这就是溢出了。

32 位数的除法,也是一样,很容易溢出。

CALL OUTPUT;调用输出运算结果子程序

;

;在这儿添加分支即可

;

NEXT1:

MOV AH,4CH

INT 21H

是不是要达到上这个效果?大写变小写,其他的不变输出。

具体程序如下,刚刚调试完毕,

;字符串大写字母转换为小写

;提示输入字符串;

;输入任意字符串string,点击Enter 结束输入;

;将字符串string 中的大写字母转换为小写字母输出,

;按回车键结束。

DATA SEGMENT

BUF1 DB 'Please input random string,end with Enter key:$';提示输入

BUF2 DB 0,0,0,0,0,0,0,0,0,0,0DH;存放输入的字符,假设最多10个字符

NUM1 DW 0;实际输入数据的个数

BUF3 DB 0DH,0AH    ;回车换行

BUF4 DB 0,0,0,0,0,0,0,0,0,0,0DH;存放转换过的字符

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA

START:PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

CALL PROC1

CALL PROC2

CALL PROC3

CALL PROC4

CALL PROC5

CALL PROC6

RET

MAIN ENDP

PROC1 PROC NEAR    ;提示输入

MOV DX,OFFSET BUF1

MOV AH,09H

INT 21H;显示提示输入语句

RET

PROC1 ENDP

;输入并存储

PROC2 PROC NEAR

MOV SI,OFFSET BUF2

MOV CX,20

SHURU:MOV AH,01H;键盘输入并回显,AL=输入字符

INT 21H

CMP AL,0DH;判断是否回车符

JZ NEXT

MOV [SI],AL

INC SI

INC NUM1

LOOP SHURU

NEXT:MOV [SI],0DH

RET

PROC2 ENDP

PROC3 PROC NEAR        ;大写变小写,其他不变,存放于BUF4

MOV CX,NUM1

MOV DI,OFFSET BUF4

MOV SI,OFFSET BUF2

BIANHUAN:     MOV AL,[SI]

OR AL,20H

NEXT1:MOV [DI],AL;不是大写字符的不变,存入BUF4,若是大写字符,则变为小写字符再存

;入BUF4对应单元

INC DI

INC SI

LOOP BIANHUAN

RET

PROC3 ENDP

PROC4 PROC NEAR        ;输出一个回车换行

MOV CX,2

MOV DI,OFFSET BUF3

SHUCHU:MOV DL,[DI]

MOV AH,02H

INT 21H

INC DI

LOOP SHUCHU

RET

PROC4 ENDP

PROC5 PROC NEAR        ;显示转化为小写之后的字符串

MOV CX,NUM1

MOV DI,OFFSET BUF4

SHUCHU1:MOV DL,[DI]

MOV AH,02H

INT 21H

INC DI

LOOP SHUCHU1

RET

PROC5 ENDP

PROC6 PROC NEAR

MOV AH,07H

CMP AL,0DH

JZ EXIT1

EXIT1:MOV AH,4CH     ;按回车键,结束程序

INT 21H

RET

PROC6 ENDP

CODE ENDS

END START

以上就是关于在汇编程序中,如果程序跳转到最后一句这时程序如何运行全部的内容,包括:在汇编程序中,如果程序跳转到最后一句这时程序如何运行、80X86汇编, 编译链接后运行后不退出程序, 模拟器卡死了, 代码不长, 就是实现除法运算.、求用汇编语言修改下面的程序(使下面的计算器程序能够一直运行直到按esc键退出)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存