汇编网首页登录博客注册
zhangzl419的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2009-08-12 12:01] 第七、八、九章检测点和实验

第七章实验
(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
评论次数(1)  |  浏览次数(667)  |  类型(汇编作业) |  收藏此文  | 

[  mywiil   发表于  2009-08-13 09:49  ]

博主回答的都没有问题。
对于检测点9.1 
(1)db 0 
     dw 0
这个答案,其实只是一种情况 ,其实只要符合如下形式的都可以
db * ,0,0,*,*.....

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码