• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

汇编语言,关于assume的伪指令

定义一个班级的成绩数组,数组长度N>=15。统计其中优秀[100,90]、良好[89,80] 、中等[79,70] 、及格[69,60] 、不及格[59,0]的人数,分别存于A_NUM、 B_NUM、 C_NUM、 D_NUM、 E_NUM中。
要求各个分数段都有人员分布
assume cs:code
data segment
        db 22,33,44,55,66,77,88,99,11,78,69,98,87,85,96,45
        a_num db 0
        b_num db 0
        c_num db 0
        d_num db 0
        e_num db 0  
data ends


code segment
        start:
        mov ax,data
        mov ds,ax
        mov si,0


       
        mov cx,16
        s:
        mov al,[si]
        cmp al,90
        jnb sa   
        cmp al,80
        jnb sb
        cmp al,70
        jnb sc
        cmp al,60
        jnb sd
        inc e_num[0]
        jmp short ok


       
        sa:inc a_num[0]
        jmp short ok
        sb:inc b_num[0]
        jmp short ok
        sc:inc c_num[0]
        jmp short ok
        sd:inc d_num[0]


       
        ok:inc si
        loop s


       
        mov ax,4c00h
        int 21
code ends
end start


该程序assume中没有添加ds:data,不能编译(我添加后是可以的)
以下程序也没有添加,却能编译(不同的题目代码)
希望能够解答,这其中的差异是什么,是什么原因导致的,嘻嘻,最好最后附带assume的具体用法
3.数值显示(将data段中的数据以十进制的形式显示出来)
assume cs:code
data segment
      dw 123,12666,1,8,3,38
data ends
string segment
      db 6 dup (0)
string ends

code segment
      start:
      mov cx,6  ;六个数据,循环六次
      mov ax,data
      mov ds,ax
      mov bx,0
      mov dh,8
      s:
      push cx
      push ds  ;循环体内用到cx,ds压栈保护
     
      mov ax,[bx]
    call dtoc
    mov dl,3
    mov cl,2
    mov ax,string
    mov ds,ax
    call show_str
    inc dh
    add bx,2
         
    pop ds
    pop cx
    loop s
   
    mov ax,4c00h
      int 21h
     
      dtoc:
      push ax
      push cx
      push dx
      push bx
      push es
      push di   ;压栈保护
     
      mov bx,string
      mov es,bx
      mov di,5
      mov si,di
      go:
      mov dx,0
      mov bx,10
      div bx   ;用32位除 16位 ax存商 dx余数
     
      add dx,48
      mov es:[di],dl
      dec di  ;将余数转ASCII码值
     
      mov cl,al
      mov ch,0
      jcxz ok1  ;判断商是否为0,是0则返回
      mov si,di
      jmp short go
     
      ok1:
      pop di
      pop es
      pop bx
      pop dx
      pop cx
      pop ax
      ret   ;出栈,返回
     
      show_str:
      push ax
      push es
      push dx
      push bx
      push di
      push si
      push cx    ;压栈保护现场
           
      mov ax,0b800h
      mov es,ax
           
      mov al,160
      dec dh
      mul dh      ;一行160字节,7*160即从第八行开始
      add dl,dl
      sub dl,2
      mov bl,dl
      mov bh,0
      add ax,bx
      mov di,ax ;解决di在屏幕上的位置,行数+列数的和
           
      mov dl,cl ;因为下面要判断字符是否为零,需要cx,所以先用dl保存cl    的颜色数据
      mov ch,0
         
      okk:
      mov cl,[si]
      mov es:[di],cl
      jcxz ok    ;字符为零,转到ok出栈结束程序
      mov es:[di+1],dl
      inc si
      add di,2
      jmp short okk ;跳转,继续下一字符的判断
           
      ok:
      pop cx
      pop si
      pop di
      pop bx
      pop dx
      pop es
      pop ax   ;出栈
           
      ret
code ends
end start

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!