一、实验要求
- 1.你的程序不要截图,直接粘贴。
- 2.用蓝色或者绿色字体作答。
二、实验技巧
- 1.程序运行没有输出,怎么查看运行结果?(debug所生成的可执行文件,执行后,查看结果)
- 2.dos下打字很慢怎么办?(可以使用shift+向上或者向下,查看已经输入过的指令)
- 3.编译出错怎么办?(仔细查看出错提示信息,找到对应行检查。asm文档在打开的状态,可以对其在dos下编译)
- 4.请独立完成作业。(可偷看别人的程序,但不能复制粘贴)
三、实验内容
- 1:编写程序,计算1+3+5…+99,结果存放在内存中。
思考:debug生成的可执行文件,找到数据段和代码段。数据段的起止地址是?代码段的起止地址是?你设置的数据段有多大,实际能用的数据段有多大?
数据段的起止地址是076A:0000 003F
代码段的起止地址是076B:0000 001D
设置的数据段076A:0000 003F
实际能用的数据段有076A:0000 007
源程序(不要截图):
Data segment
sto DW 1000h
Data ends
assume cs:code , ds:data
code segment
assume cs:code,ds:data
start:
mov ax , data
mov ds , ax
mov ax,0
mov bx,0
mov cx,50
mov dx,1
s: add ax,dx
add dx,2
add bx,ax
loop s
mov sto,ax
mov ax,4c00h
int 21h
code ends
end start
结果(截图):
2:编写程序,设置足够大的数据段,初始状态每个字节数值全7。使用汇编指令将字母表ABCD….Z存储在数据段中。将数据段中存储的26个字符全部输出。
思考:debug生成的可执行文件,找到数据段和代码段。数据段的起止地址是?代码段的起止地址是?你设置的数据段有多大,实际能用的数据段有多大?
数据段的起止地址是076A:0000 003D
代码段的起止地址是076C:0000 001D
设置的数据段076A:0000 003D
实际能用的数据段有076A:0000 001A
源程序(不要截图):
Data segment
da DB 32 DUP(7)
Data ends
assume cs:code , ds:data
code segment
start:
mov ax , data
mov ds , ax
mov ax , 41h
mov bx , 0
mov cx,26
mov bx,offset data
s: mov [bx],ax
add al,1
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end start
运行结果(截图):
3.大家来找茬。请翻到本文档下一页,请根据截图判断哪里出错了,再看看自己判断是否正确。你能找到错误原因的题有几道?Mov ax,4C00 4C00后面没有H,
第二行CS:CODE是中文冒号
Code ends结束
Mov bx,1234h使用了中文的逗号
【这么炎热的夏天,就应该吃冰的!甜筒甜筒~好吃好吃,奶茶奶茶,好喝好喝,突然想吃饭了,好像饿了诶。嘿嘿,吃饭去啦!L(‘ω’)┘三└(‘ω’)」】
句子君:
马云在汪涵生日时发给汪涵一条短信,马云说:汪涵,男人的最佳年龄是40到50岁之间的十年,要做想做和可以做的事很多,30岁之前做别人要你做的事,30岁后稀里糊涂学着自己做事,40岁必须知道自己最强最喜欢做的事,50岁的时候,要考虑为年轻人做一点事。