汇编问题复制位到指定单元的

神杀中龙 2006-08-18 12:17:14
具体问题是:
设内存OPCD单元存放一个16位代码,编制程序将其中15~13 12~8 7~3 2~0位的代码分别存入WCD开始的
单元,每段代码的最低位与单元的第0位对齐。

以下是我做的,我希望高手再给个精简的

MEM db 09h
OPCD DW 4A24H

WCD db 00h,00h,00h,00h
ENDD db 00h ;末地址

msk db 0E0h,1Fh,0F8h,07h; 掩码
dseg ends

sseg segment stack
sktop db 20 dup(0)
sseg ends

code segment
assume cs:code,ds:dseg,ss:sseg
start:mov ax,dseg
mov ds,ax
mov ax,sseg
mov ss,ax
mov sp,size sktop

lea si,WCD ;
lea di,msk
mov bl,0
again3: cmp si,offset ENDD
ja exit
mov ax,OPCD
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
...全文
143 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
神杀中龙 2006-08-23
  • 打赏
  • 举报
回复
原始数据没变,以下是我精简后的代码。
但是掩码仍然是自己算的,我希望能自动算出掩码,肯定大侠指点。并再精简。
lea si,WCD
mov ax,OPCD
mov bx,ax; 取数据
and bl,07h
mov [si],bl
inc si
mov bl,al
and bl,0F1h
mov [si],bl
inc si
and bh,0E0h
mov [si],bl
inc si
mov bh,ah
and bh,1Fh
mov [si],bl

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧