今天的汇编,接触这个问题

本文介绍了一种使用XLAT查表法计算S=X²+Y²的方法,并给出具体实现代码。同时,文章还提供了一个解决内存中16位代码按位提取并存储的问题的函数。

4.8 利用查表法计算 S = X2 + Y2,设0<= X <= 15, 0<=Y<=15,且分别在DAX,DAY字节单元存放,结果存入RLT单元。

这个问题要涉及到XLAT查表。

另外今天还用笨拙的方法解决了4.6 4.7问题,但是在网上寻求精简的方法无效果。
;函数 NumValue_CCCode[Me]
NumValue_CCCode proc
;入口 si = 存储单元地址 di = 掩码地址 ENDD为存储单元末地址 dx = 原始数据
;出口 si指行的地址
  mov bl,0
again3: cmp si,offset DataEndAddr
        ja  exit
        mov ax,dx
        mov cl,[di]
        cmp bl,2
        jae logicn
  and ah,cl
  jmp caseZ
logicn: and al,cl

caseZ:  cmp bl,0       ;=0时
  jz  right4
  cmp bl,2       ;=2时
  jz  right3
  jmp perform
right4: mov cl,4
  shr ah,cl
  jmp perform
right3: mov cl,3
        shr al,cl
perform:cmp bl,2
        jae jbcase1
        mov [si],ah
        jmp subcase  
jbcase1:mov [si],al
subcase:inc si; 地址增1
        inc di
        inc bl
        jmp again3
 ret

NumValue_CCCode endp
这个函数就解决书上的问题4.7的
设内存OPCD单元存放一个16位代码,编程将其中15~13,12~8,7~3,2~0位的代码分别存入WCD开始的单元,每段代码的最低位与单元的第0位对齐。

转载于:https://www.cnblogs.com/microsoftxiao/archive/2006/08/18/480437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值