实验要求
(1)将字符串TABLE(10) “0123456789” 传送到另一个内存 BUF(10)
(2)将TABLE单元的10个字节数据传送到TABLE+5开始的单元
(3)计算X+Y,结果存Z单元
(4)计算(X+Y)/X,商存Z单元,余数存Z+2单元
实验代码及解释
代码编译、链接、调式
途中遇到的填写提示,全部回车默认即可。
复制代码
1
2
3
4masm test1.asm link test1.obj debug test1.exe
(1)将字符串TABLE(10) “0123456789” 传送到另一个内存 BUF(10)
CLD——将标志寄存器Flag的方向标志位DF清零。在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后。
REP MOVSB——搬移字串。
(2)将TABLE单元的10个字节数据传送到TABLE+5开始的单元
这个要考虑覆盖的问题,从前面开始就会导致覆盖,而需要从后面覆盖
STD——将方向标志位DF置1,在字串操作中使SI或DI的地址指针自动递减,字串处理由后往前。
(3)计算X+Y,结果存Z单元
注意进位。
复制代码
1
2
3
4结果在:001A(26D) 1 DW == 2 DB 10+10+1+1+2+2=26=1A
(4)计算(X+Y)/X,商存Z单元,余数存Z+2单元
注意进位。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50ASSUME DS:seg1,CS:seg2 seg1 SEGMENT TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H BUF DB 10 DUP(0) NUMBER DB 7 ASCII DB 0 X DW 1000H Y DW 0FFFFH Z DW 0,0 seg1 ENDS seg2 SEGMENT start: MOV AX,seg1 MOV DS,AX MOV ES,AX ;(1)查表 LEA BX,TABLE MOV AL,NUMBER XLAT MOV ASCII, AL ;(2)字串传送 MOV CX,10 LEA SI,TABLE LEA DI,BUF CLD REP MOVSB ;(3)计算(X+Y),结果存Z单元 MOV DX,0 MOV AX,X ADD AX,Y ADC DX,0 MOV Z,AX MOV Z+2,DX ;(4)完成任务二 ;改写程序,将TABLE单元的10个字节数据传送到TABLE+5开始的单元 MOV CX,10 LEA SI,[TABLE + 9] LEA DI,[TABLE + 14] STD REP MOVSB ;添加代码,完成(X+Y)/X,商存Z单元,余数存Z+2单元 MOV DX,0 MOV AX,X ADD AX,Y ADC DX,0 DIV X MOV Z,AX MOV Z+2,DX seg2 ENDS END start
图片结果
展示(2)和(4)的结果
X = 1000H
Y = 0FFFFH
X+Y = 10FFFH
(X+Y)/Z = 0010、0FFF
最后
以上就是奋斗书包最近收集整理的关于汇编实验一——字符串操作/求X+Y和的全部内容,更多相关汇编实验一——字符串操作/求X+Y和内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复