汇编语言程序设计的题目,谢谢高手指点啊。

编写汇编语言程序,将内存中ADR1开始存放的5个字节的压缩型BCD码拆成非压缩型BCD码,存入ADR2开始的字节单元中。

谢谢了。

; 本程序通过编译,运行正确

Code Segment
Assume CS:Code,DS:Code

ADR1 db 15H,23H,35H,46H,97H ;5个字节压缩BCD码
Elements equ ($-ADR1)/Type ADR1 ; 数组元素个数
ADR2 dW Elements DUP(?) ;非压缩BCD码

Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段

; 将内存中ADR1开始存放的5个字节的压缩型BCD码拆成非压缩型BCD码,存入ADR2开始的字节单元中。
cld
lea si,ADR1 ;5个字节压缩BCD码数组地址
LEA di,ADR2 ;5个字非压缩BCD码数组地址
mov cx,Elements ; 数组元素个数装入计数寄存器
split: lodsb ;读入一个元素至AL
xor ah,ah
push cx
mov cl,4
shl ax,cl ;压缩BCD码高4位移至AH的低4位
shr al,cl ;将被移到高4位原压缩BCD码低4位移回低4位,完成拆分
pop cx
stosw ;保存拆分好的非压缩BCD码
loop split

Exit_Proc: mov ah,4ch ;结束程序
int 21h

Code ENDS
END Start ;编译到此结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-30
;本程序调试正确.
data segment
ADR1 db 15H,23H,35H,46H,97H ;5个字节压缩BCD码
Count equ $-ADR1 ; 数组元素个数
data ends
ext segment
ADR2 dw Count dup(?) ;非压缩BCD码
ext ends
code segment
assume cs:code,ds:data,es:ext
start:
mov ax,data
mov ds,ax
mov ax,ext
mov es,ax
cld
lea si,ADR1 ;5个字节压缩BCD码数组地址
lea di,ADR2 ;5个字非压缩BCD码数组地址
mov cx,count ; 数组元素个数装入计数寄存器
next:
lodsb ;读入一个元素至AL
mov ah,al
and ah,0fh ;拆出低位
shr al,1
shr al,1
shr al,1
shr al,1 ;拆出高位
stosw ;保存拆分好的非压缩BCD码
loop next
mov ah,0
int 16h
mov ah,4ch ;结束程序
int 21h

code ends
end start ;编译到此结束

汇编语言程序设计习题解答
1、设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种:解答:根据操作数地址码为6位,则二地址指令中操作码的位数为16 – 6 – 6 = 4。这4位操作码可有24=16种操作。由于操作码固定,则除去了零地址指令P种,一地址指令Q种,剩下二地址指令最多有16 – P – ...

《汇编语言程序设计》复习题答案求救,分析题!高分,谢谢!
MOV A,AX ;最后是1AH 六.程序填空 第一空 0FH 第二空 4AH.这一题的基本思想就是把 BX 循环右移四位,取BL,赋给AL,与上0FH,把高四位清零,得低四位,再加上30H,判断是否超过A,因为A的ASCLL与0-9的ASCLL码不是连续的,所以要根据判断结果再加上07H,就这样了。我原是汇编科...

汇编语言程序设计提问
1.ax和bl类型(长度)不同 2.cs不能作为目的操作数 3. inc的操作数应是一个寄存器或内存单元,执行结果是将其内容加1 4.不能直接把立即数传送到段寄存器中,可以改为 mov ax,2000H mov dx,ax 5.add的源操作数不能是段寄存器,只能是通用寄存器、立即数或存储器 6.寄存器间接寻址的寄存器只...

汇编语言程序设计题目
一、改错(只能对每条错误指令的一个操作数进行修改)。(共10分,每小题1分)1. MOVBX,AL改正: MOV BX,BX 2. MOV AX, A999H 改正:MOV AX,0A999H 3. MOV AL, 1234改正:MOV AX,1234 4. MOVAX, [CX] 改正:MOV AX,[BX]5. MOVDS, 1000H 改正:MOV AX,1000H ...

汇编语言的一些程序设计题,谁能举例解答一下
1、交换可以用堆栈进行,AX。BX相互交换内容 PUSH AX PUSH BX POP AX POP BX 这样AX和BX内容就交换了 2、为了方便你理解,写一些不正确的表达式吧 MOV AX,0 相当于 int a=0;XOR AX,AX XOR这个指令,如果后面两个数相同,则为0,并将0存放到第一个寄存器AX中 SUB AX,AX 相当于 ...

《汇编语言程序设计》 题目解答
MOV AX,-100H MOV BX,16 IMUL BX (1)执行后,AX=F000H,BX=16,DX=FFFFH (2)若将IMUL改为MUL则执行完后,AX=1600H,BX=16,DX=000BH 6、下面程序段中每条指令执行完后,AX的内容是什么(十六进制)?MOV AX,0;AX=0000H DEC AX;AX=FFFFH ADD AX,3;AX=0002H NOT AX;AX=FFFDH XCH...

汇编语言程序设计题目,在线等答案!!!急!
DISP FU:LEA DX, MSG2 DISP:MOV AH, 9 ;显示字符串.INT 21H MOV AH, 4CH INT 21H CODE ENDS END START ;--- 其它题目,也回答了不少,可见楼主提问的其它网页。

汇编语言程序设计题求高手
; 子程序原型:对字节元素进行无符号升序排序。Bubbling Proc Near PUSH AX PUSH BX PUSH CX PUSH SI PUSH DI ; ---根据排序参数,修改排序指令 LEA SI,Parameters LEA DI,@@Compare MOV AL,TYPE BUF DEC AL PUSH AX LEA BX,[SI.Load]XLAT MOV [DI][2],AL POP AX PUSH...

求汇编语言与程序设计高手来。我需要组一份汇编试题请高手给做下。谢 ...
3试问下面的程序段完成的功能是什么? (5分)SAL AX,1 RCL DX,1 5.已知程序段:STRING DB ‘ABCDEFGHIJ’┇ MOV AH,01 ;从键盘输入字符1~9 INT 21H AND AL,0FH DEC AL XOR AH,AH MOV BX,OFFSET STRING ADD BX,AX MOV DL,[BX]MOV AH,02H ;显示输出 INT 21H ┇ 试回答: (1...

汇编语言程序设计题目,在线等答案!!!急!
21H POP AX CMP AH, 10 JB A302 ADD AH, 7 A302:ADD AH, 30H MOV DL, AH MOV AH, 2 INT 21H MOV DL, 'H'MOV AH, 2 INT 21H MOV AH, 4CH INT 21H CODE ENDS END START 程序运行后,将以16进制形式显示平均值58H。

相似回答