汇编顺序程序设计Word下载.docx
《汇编顺序程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《汇编顺序程序设计Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
二、实验源代码
第一个实验两种方法
(1)Datasegment
Data1db05bh
Data2db63h
Dataends
Codesegment‘code’
Assumecs:
code,ds:
data
Start:
Movax,data1
Movds,ax
Moval,data1
Movbl,data2
Movdata1,bl
Movdata2,al
Movah,4ch
Int21h
Codeends
Endstart
dsegsegment
data1db96,67,85,90,56,73,100,88,52,79
Adb0
Bdb0
Pdb0
Edb0
Fdb0
Gdb0
dsegends
csegsegment'
code'
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
leasi,data1
movcx,10
gxj:
movax,[si]
cmpal,60
jbgxj1
cmpal,70
jbgxj2
cmpal,80
jbgxj3
cmpal,90
jbgxj4
cmpal,100
jbgxj5
jegxj6
gxj1:
incG
incsi
loopgxj
jmpgxj7
gxj2:
incF
gxj3:
incE
gxj4:
incP
gxj5:
incB
gxj6:
incA
gxj7:
movah,4ch
int21h
csegends
endstart
方法二
Datasegment
Extrasegment
Extraends
data,es:
extra
start:
movax,sseg
movss,ax
movsp,sizestk
movah,1
int21h
cmpal,0dh
jezwf1
cmpal,30h
jbzwf2
cmpal,39h
jbzwf3
cmpal,41h
cmpal,5ah
Moves,ax
Movbl,es:
data2
Xchgal,bl
Movdata1,al
Moves:
data2,bl
实验二
Xdb6
Ydb?
Movax,data
Moval,10
Mulx
Movy,al
Movah,4ch
Int21h
三、实验总结
对于第一个实验的第一种方法:
这个实验主要是实现两个数据的交换,在编写的时候我并没有用xchg而是采用最常用的MOV指令,只是两个数据的交换。
发现用一个中间转量是不行的,立即数与立即数是不能直接传送的,所以我采用了两个中间转换量!
进而实现了交换。
对于第一个实验第二种方法:
这个实验也是主要实现转换,只是和上个不同的是这个是数据段与附加段数据的转换,在转换过程中我用了xchg直接进行转换,可能是第一次上机编写不太熟练,很多地方出现了错误,例如标点的使用,对xchg的使用需要注意的方面不是很熟悉,例如不能同为存储器操作数,段寄存器不能作为操作数。
还有对这个程序的编写虽然知道个大概,但是细细写来还是很多地方不会。
在观察程序在内存中的变化时,有时候忘记了修改段寄存器的数据,导致整个程序都执行完了。
我还没有看到有什么变化,所以以后在执行前一定要记得修改段寄存器的地址先找到存放数据的地方才能观察到!
第二个实验:
这个实验主要实现Y=10X这个函数,在编译的时候我把10赋给了AL,把要进行计算的数赋给了X,然后再使用函数MULX,进而实现了函数的计算,在这个实验中主要遇到了一些细节问题,比如在进行输入代码的时候符号及一些很小的地方出现了问题,可能是由于刚开始接触汇编语言的语言吧,感觉它不如C语言熟练,很多和C语言不一样的地方有点不习惯甚至在编译的时候还误把C语言的格式语言写在上面,总之需要细心,尤其是编写的时候尽管很小的符号吧,也应该细心。
实验分支结构程序的设计
实验目的
熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法
ssegsegmentstack
stkdb20dup(0)
程序源代码
实验一
SSEGSEGMENTSTACK
STKDB20DUP(0)
SSEGENDS
DSEGSEGMENT
BUFDW7138H,64A6H,12EH
MINDW?
DSEGENDS
CSEGSEGMENT'
CODE'
ASSUMECS:
CSEG,DS:
DSEG
ASSUMESS:
SSEG
FMIN:
MOVAX,DSEG
MOVDS,AX
MOVAX,SSEG
MOVSS,AX
MOVSP,SIZESTK
LEASI,BUF
MOVAX,[SI]
MOVBX,[SI+2]
CMPAX,BX
JLEFMIN1
MOVAX,BX
FMIN1:
CMPAX,[SI+4]
JAEFMIN2
MOVAX,[SI+4]
FMIN2:
MOVMIN,AX
MOVAH,4CH
INT21H
CSEGENDS
ENDFMIN
实验总结
通过本次实验,遇到了很多细节问题,比如加了堆栈段后相应程序执行中的语句不能少了,我遇到的第一个问题就是加堆栈段和不加堆栈段的区别。
有时候由于粗心会用错相应的语句,这个实验是对三个有符号的数进行比较所以跳转的时候要用有符号的相应语句,而我在第一次编写的时候误写成了无符号的语句。
还有就是和上几个实验一样遇到的问题,标点符号一些似很小的细节但是会导致程序不能运行,所以一定要细心!
通过本次实验,我在编写程序时遇到了许多问题,在编写第一个程序时由于没有保存,在删除内容时按键过猛,导致内容全无,又从新开始编写程序,因而下次实验一定要先保存,避免又出现相同的现象。
编程过程中由于没有仔细看题目,没有看到题目要求是“有符号字节型数”,而在开始编写时误写成了无符号的语句。
其次是对堆栈段的使用不熟练,不知道什么时候该加何时该加。
3.掌握条件转移、无条件转移指令的使用方法
4.掌握分支结构程序设计、编写、调试和运行的方法
有符号字节型数