一、实验要求
- 1.请独立完成作业。
- 2.请使用debug调试程序,这样不但可以查看运行结果,还能检查程序问题。
- 3.思考题需要作答。
二、实验内容
- 1.编写程序实现:
①从键盘输入一个小写字母,存储在内存的代码段中;
②将其转换成大写字母后再次存储在代码段中(不能覆盖之前存储的小写字母);
③将大写字母输出。
- 思考1:debug调试程序,初始状态下CX的值有何意义?
- 思考2:debug调试程序,代码段的起始物理地址和结束物理地址分别是多少?
源程序(不要截图):
code segment
assume cs:code
start:
mov ax,cs
mov ds,ax
;键盘输入字符
mov ah,01h
int 21h
mov bl,al
;转换字符 ,32的十六进制是20,大写转换成小写是加上32
and al,11011111b
;显示的字符
mov dl,al
mov ah,02h
int 21h
;mov dx,offset sto
mov ax,4c00h
int 21h
code ends
end start
思考1:debug调试程序,初始状态下CX的值表示代码的长度
思考2:debug调试程序,代码段的
起始物理地址:076A:0000
结束物理地址:076A:0017
2.不设置数据段,在代码段中编写程序,使用loop循环,在代码段中存储十进制字节型数据:48,49,50,51,52,53,54,55,56,57;使用loop循环,将上述数据当作ASCII码输出。debug调试程序,分别使用d命令和u命令查看代码段,并运行。
- 思考3:代码段中存放数据的起始物理地址和结束物理地址分别是多少?
- 思考4:代码段中存放代码的起始物理地址和结束物理地址分别是多少?
- 思考5:猜测初始状态下,此题与上个实验第2题cx的值是否相同,说出理由,并验证。
源程序(不要截图):
assume cs:code
code segment
sto dw 48h,49h,50h,51h,52h,53h,54h,55h,56h,57h
start:
mov ax,sto
mov bx, offset sto
mov al,48
mov cx,10
s:
mov [bx],al
add al,1
add bx,1
loop s
mov bx,offset sto
mov cx,10
j:
mov dl,[bx]
mov ah,2
int 21h
add bx,1
loop j
mov ax,4c00h
int 21h
code ends
end start
思考3:代码段中存放数据的
起始物理地址:076A:0000
结束物理地址:076A:0012
思考4:代码段中存放代码的
起始物理地址:076A:0000
结束物理地址076A:002F
思考5:猜测初始状态下,此题与上个
实验第2题cx的值是否相同
不同,代码长度不一致
3.改编第1题。在代码段中开辟两个字节大小的数据空间,用来存放输入输出的小写和大写字母;查看第1题的机器码,将其机器码以数据形式写入代码段(使用伪命令db或者dw);设置start的位置,使得这些机器码都能执行。
- 思考6:debug调试程序,猜测初始状态下CX的值与第1题是否相同?r命令查看验证猜测是否正确。
- 思考7:猜测此题代码段的机器码与第1题是否相同?debug调试程序,查看代码段验证。
源程序(不要截图):
assume cs:code
code segment
start:
db 2eh
db 8ch,0c8h
db 8eh,0d8h
db 0b4h,01h
db 0cdh,21h
db 8ah,0d8h
db 24h,0dfh
db 8ah,0d0h
db 0b4h,02h
db 0cdh,21h
db 0b8h,0,4ch
db 0cdh,21h
code ends
end start
思考6:debug调试程序,猜测初始状态下CX的值与第1题相同
思考7:猜测此题代码段的机器码与第1题相同
【得嘞!今天突然发现又有新的作业了,两眼泪光闪闪~吃了室友得蜜瓜,漫画得VIP快要过期啦!马上看完更新了的!先走一步啦】
文章君:
@别偷我糖:“你可以讨厌一个东西,但请允许它存在,也请允许别人喜欢它。”不贬低别人的喜欢是最基本的素养。