程序荟萃.docx

上传人:b****7 文档编号:9062765 上传时间:2023-02-03 格式:DOCX 页数:8 大小:15.40KB
下载 相关 举报
程序荟萃.docx_第1页
第1页 / 共8页
程序荟萃.docx_第2页
第2页 / 共8页
程序荟萃.docx_第3页
第3页 / 共8页
程序荟萃.docx_第4页
第4页 / 共8页
程序荟萃.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

程序荟萃.docx

《程序荟萃.docx》由会员分享,可在线阅读,更多相关《程序荟萃.docx(8页珍藏版)》请在冰豆网上搜索。

程序荟萃.docx

程序荟萃

显示字符串程序

DATASSEGMENT

STRINGDB0ah,0dh,10,13,'Helloworld!

',13,10,'$'

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDX,AX

LEADX,offsetSTRING

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

 

注:

13,10起换行的作用。

要显示字符,先将首地址给DX。

再movah,9int21h

窗口不关闭,movah,7int21h或mov0,ahint16h

 

求两个数的和,显示其结果

DATASSEGMENT

FIVEDB5

DATASENDS

STACKSSEGMENT

DB128DUP(?

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAL,FIVE

ADDAL,3

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

注,只能显示一位数字。

 

读一个多位数。

这个数在ax中,除十求余,再化成一个八位asc码,是通过dl传送的。

datasegment

data1db5dup(?

db'$'

dataends

codesegment

assumecs:

code,ds:

data;,ss:

stack1;es:

extra

start:

movax,data

movds,ax

movax,135

movsi,offsetdata1

movbx,10

addsi,4

loop1:

subdx,dx

divbx

ordl,30h;将余数转换为ascii码。

mov[si],dl

decsi

cmpax,0;AX大于0时继续相除求余。

jaloop1

movdx,offsetdata1

movah,09h

int21h

movah,7

int21h

codeends

endstart

 

子过程的运用,先注意格式。

逐步理解各指令的运用。

datasegment

data1db5dup(?

db'$'

dataends

;extrasegment

;ddb200dup(?

;extraends

stack1segment

db20dup(?

stack1ends

codesegment

assumecs:

code,ds:

data,ss:

stack1;es:

extra

start:

movax,data

movds,ax

;movax,extra

;moves,ax

movax,stack1

movss,ax

;;

movax,888

;;

callhtd

;;

movdx,offsetdata1

movah,09h

int21h

movah,7h

int21h

htdprocnear

movsi,offsetdata1

movbx,10

addsi,4

loop1:

subdx,dx

divbx

ordl,30h;将余数转换为ascii码。

mov[si],dl

decsi

cmpax,0;AX大于0时继续相除求余。

jaloop1

ret

htdendp

codeends

endstart

求二个数的和,可依次编写下列各程序。

1)将二个立即数相加,并显示。

程序只要使用代码段,没有数据段。

CODESSEGMENT

ASSUMECS:

CODES

START:

MOVAL,5

ADDAL,3

ADDAL,30H

MOVDL,AL

MOVAH,2;输出一个字符。

字符值在DL中。

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

2)将二个存储数相加,并显示。

程序必须有数据段。

DATASSEGMENT

oneDB5

twodb3

DATASENDS

STACKSSEGMENT

DB128DUP(?

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAL,one

ADDAL,two

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

3)将上面的加指令换成减指令。

即将add换成sub,观看结果。

4)多位数的加法

datasegment

data1db5dup(?

db'$'

dataends

CODESSEGMENT

ASSUMECS:

CODES,ds:

data

START:

movax,data

movds,ax

MOVAx,15

ADDAx,23

;;;;;;;;;;;;;;;;;;;;

callhtd;用于表示为五位数字

;;;;;;;;;;;;;;;;;;;;

movdx,offsetdata1

movah,09h

int21h用于显示出数字

;;;;;;;;;;;;;;;;;;;

MOVAH,4CH

INT21H

;;;;;;;;;;;;;;;;;;;

htdprocnear

movsi,offsetdata1

movbx,10

addsi,4

loop1:

subdx,dx

divbx

ordl,30h;将余数转换为ascii码。

mov[si],dl

decsi

cmpax,0;AX大于0时继续相除求余。

jaloop1

ret

htdendp

CODESENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1