以下为《第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-用子程序求字符串中的长度》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。