第9周 课后作业 任务1-用子程序求字符串中的长度

本文由用户“yblnau”分享发布 更新时间:2021-05-25 12:56:22 举报文档

以下为《第9周 课后作业 任务1-用子程序求字符串中的长度》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

第9周 课后作业

任务1-用子程序求字符串中的长度

在数据区中给定了用0结束的字符串。请补充完成子程序,求出字符串的长度(0之前的字符个数),并将之保存在0之后的字节中。(以下面程序数据区中给出的字符串,得到的长度为24/18H)。

assume cs:cseg, ds:dseg, ss:sseg

sseg segment stack

dw 100h dup (?)

sseg ends

dseg segment

db 'YanTai University 264005', 0

dseg ends

cseg segment

start: mov ax, dseg

mov ds, ax

mov ax, sseg

mov ss, ax

mov sp, 100h

mov bx, 0

call getLength

mov ax, 4c00h

int 21h

;子程某某:getLength

;功 能:计算从DS:bx开始到以0结束的字符串的长度,并保存到0的后面

;入口参数:DS和BX寄存器中保存字符串的起始地址

;出口参数:无

getLength proc

; 在这里写出你的代码

ret

getLength endp

cseg ends

end start

提示:(1)就目前学过的知识,此项目只要用好jcxz指令即可有效解决“是否读到0”的问题,并不需要拓展学习后面的内容;(2)此项目中的字符串和C语言中的字符串概念相同,注意字符'0'和数值0有区别。

代码

assume cs:cseg, 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 ”对应的内存单元,然后将字符以及对应的属性字节写入到内存中。

按照P187实验9中的指导完成,在报告中截屏说明。

assume ds:datasg,cs:codesg,ss:stacksg

datasg segment

db 'YantaiUniversity'

db 02h,24h,71h

datasg ends

stacksg segment

dw 16 dup(0)

stacksg ends

codesg segment

main proc

start:

mov ax,datasg

mov ds,ax

mov ax,stacksg

mov ss,ax

mov sp,16

mov ax,0b800h

mov es,ax ;存放显示缓冲区段地址

mov si,16

mov dl,ds:[si] ;存放属性值

mov bx,820H+64 ;屏幕中间首地址

mov cx,3 ;外循环,三行

s:

call col

add bx,160 ;下一行

inc si

mov dl,ds:[si]

loop s

mov ax,4c00h

int 21h

main endp

col proc

push cx ;存放外循环的值

push si

mov ax,0

mov si,0

mov di,0

mov cx,16 ;内循环,16个字符

s1:

mov al,byte ptr ds:[di]

mov ah,dl

mov word ptr es:[bx+si],ax;存放字符值和属性值

inc si

inc si

inc di

loop s1

pop si

pop cx

ret

col endp

codesg ends

end start



[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《第9周 课后作业 任务1-用子程序求字符串中的长度》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览