第七章实验
(2)编程,完成问题7.9中的程序
程序如下:
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov bx,0
mov cx,4
s:
push cx
mov si,0
mov cx,4
s0:
mov al,[bx+3+si]
and al,11011111b
mov [bx+3+si],al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
第八章实验
程序如下:
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
;以上是表示21年的21个字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,118300,184300,275900,375300,464900,593700
;以上是表示21年公司总收入的21个dword型数据
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据
;5,3,42,104,85,210,123,111,105,125,140,136,87,16,
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov di,0
mov si,0
mov cx,21
s: mov ax,[0+di]
mov es:[bx+0],ax ;移动年份的前两个字节
mov ax,[84+di]
mov es:[bx+5],ax ;移动公司收入的前两个字节,收入的低字在ax
mov dx,[168+si]
mov es:[bx+10],dx ;移动员工人数
add di,2
mov dx,[0+di]
mov es:[bx+2],dx ;移动年份的后两个字节
mov dx,[84+di]
mov es:[bx+7],dx ;移动公司收入的后两个字节,收入的高字在dx
div word ptr[168+si] ;计算平均工资,公司收入的前一个字节在ax,后一个字节在dx
mov es:[bx+13],ax ;商移入table的人均收入字段
add di,2
add si,2
add bx,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start
第九章检测点和实验
检测点9.1
(1)db 0
dw 0
(2)0
cs
(3)(cs)=0006h,(ip)=00beh
检测点9.2
mov cl,[bx]
mov ch,0
jcxz ok
inc bx
检测点9.3
inc cx
第九章实验
程序如下:
assume cs:codesg
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
codesg segment
start: mov ax,datasg
mov es,ax
mov ax,0b800h
mov ds,ax
mov bx,2080 ;第12行的首地址
mov cx,3
s0: mov bp,cx ;进入内层循环之前,保存cx的值
mov cx,16 ;内循环次数
mov di,0 ;定位行内每个字符的地址
mov si,0
s: mov al,es:[si]
mov [bx+di+64],al
mov al,es:[bp+15]
inc di
mov [bx+di+64],al
inc di
inc si
loop s
sub bx,160
mov cx,bp
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
- [younggay] 如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为N ================ 08/18 09:29
- [younggay] 实验五的第1、2题中,“s: mov [bx],bx ”这条指令应该是“s: mov [bx], 08/18 09:27
- [younggay] 更改后的回答都OK了。 08/18 08:56
- [mywiil] 博主回答的都没有问题。 对于检测点9.1 (1)db 0 dw 0 这个答案, 08/13 09:49
- [游客] 连中断都理解到了,看来博主很用心。 中断除了保存cs,ip外还有标志寄存器。 08/07 18:47
- [游客] 监测点2.1的(1)中有些不对,建议重新全部计算一下。 检测点2.3建议看看本章节的“小结”,就明 08/06 14:58
- [tinyparticle] 检测点2.1(1) 第二格mov ah,31h 第十一格add ah,ah 第十二格 08/05 21:56
- [游客] 事情选择了,就要做,做就要做好! 08/03 20:54