高分求解:几个简单的汇编程序编程

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:01:39
1将寄存器AX内容赋予BX
2将立即数3FFH传给DX
3将数据段偏移地址为2AH的寄存器中的数提供给BX
4将BH内容传给SI指定的数据段偏移地址的存储单元
5将字节量数据90H送入用BX和DI的基址变址寻址的主存单元
6将内存1000H地址开始的100个字节数据项地址方向移动一个字节的位置
7假设数的长度(以字节存放于)2500H字节单元,两个无符号二进制数分别以2000H和3000H开始存放(低字在前),求两个数之和并存放于2000H开始处,是编程实现
8在数据段中以偏移地址BUF开始连续存放着100个字符,编写一段程序,将该字符串中的所有字节‘A’改成‘B’
9编写一段程序把从PACRED开始的16位压缩的BCD数变成非压缩的BCD数,并把结果存放在从unpacked开始的单元里
10在内存中有三个字节数xyz,计算(x-y+z)/z,并将商和余数存放在次数后面。

1. mov bx, ax
2. mov dx, 3ffh
3. mov bx, ds:[2ah]
4. MOV BYTE PTR [SI], BH
5. MOV [BX+DI], 90H
6. 没看懂,向前 还是向后,我写了一个 方向递增,你自己看看需不需要改
.MODEL SMALL
.486
.CODE
BEGIN:
MOV AX, 1000H
MOV DS, AX
MOV CX, 100
NMOV:
MOV BX, 100
MOV AX, [BX]
MOV [BX+1],AX
INC BX
LOOP NMOV

MOV AH, 4C
INT 21H
END BEGIN
7. (MASM611 编译)
.MODE SMALL
.486
.DATA
.CODE
BEGIN:
MOV AX, 2000H
MOV DS, AX
MOV AL, BYTE PTR [500H]
XOR CX, CX
MOV CL, AL
MOV DX, 0 ;OFFSET OF 2000H
MOV BX, 1000H ;3000H VALUE
CLC ;CLEAR CF
XADD:
MOV AX, 0
JNB XNEXT
ADD AL, 1
XNEXT:

MOV AL, BYTE PTE [BX] ; TRANSFER THE VALUE TO AX
ADD BYTE PTR DS:[DX], AL