简单题微机原理与接口技术,汇编语言,用汇编程序写这个函数,高分求答案

如题所述

data segment
    BUFFER db -7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,0    ;x的取值
    BUFFER_Y db ($-buffer) dup(0)   ;计算存放y的值
    BUFFER_Len dw equ $- BUFFER_Y   ;数据长度
data ends

code segment
    assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax 
    mov si,offset BUFFER     ;指向x 以取值 
    mov di,offset BUFFER_Y   ;指向y 以保存结果 
    mov cx,BUFFER_Len
         s: 
            mov al,[si]  ;取到一个x值
            test al,80h  ;测试最高位是0还是1,即正负
            jz s0        ;如果等零:表示是正数及零
            mov byte ptr[di],-1  ;负数Y=-1 ,十六进制表示是HH
            jmp next     
          s0:
            cmp al,0    ;比较数据是否等于0
            jz s1
             mov byte ptr[di],1    ;如果x为正数,y=1
            jmp next
           s1:
             mov byte ptr[di],0   ;如果x=0,则y=0
             
        next:
             inc si  ;指向下一个x的地址
             inc di  ;指向下一个y的地址    
         loop s  ;循环处理每一个x值 
    mov ah,4ch
    int 21h
code ends
end start


我只能给你整数的解了,  浮点数汇编好像有点麻烦,也没有研究的必要, 所以没考虑, 看有没有其它网友给您浮点数的解.................

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-07-19
CODE SEGMENT
   BUFF_X DB -7  ;-128~+127
   BUFF_Y DB ?

   ASSUME CS:CODE,DS:CODE
START:
   PUSH CS
   POP  DS
   MOV  BUFF_Y,-1
   MOV  AL,BUFF_X
   AND  AL,AL
   JS  EXIT
   JZ  AD1
   ADD  BUFF_Y
AD1:    
   ADD  BUFF_Y
EXIT:
   MOV  AH,4CH
   INT  21H
CODE ENDS
   END  START
相似回答