简单的汇编题 谁能解答一下啊??

作者&投稿:职震 (若有异议请与网页底部的电邮联系)
简单汇编题,含答案,只需要解释一下为什么~

按字节写出以下变量的初值在内存中的存放顺序
① A DB 7,-5,?,0FBH, “ABCD”,2 DUP(2 DUP(“3”))
答:7,0FBH,?,0FBH,41H,42H,43H,44H,3,3,3,3
字节数据顺序存放
② B DW “12”,3
答:32H,31H,03H,00H
字数据低字节在前,高字节在后,是 Intel cpu 规则
③ C DD 123456H
答:56H,34H,12H,00H
双字数据最低字节在前,最高高字节在后,是 Intel cpu 规则

设(DS)=1000H,(ES)=2000H,(SS)=3000H,(BX)=0400H,(BP)=0500H,(SI)=0060H,(DI)=0070H,写出下列各条指令中,源操作数的寻址方式和物理地址。

① MOV AX,BX 答:寄存器,无物理地址
操作数均为寄存器
② MOV AX,[BX] 答:寄间,10000H+0400H=10400H
通过ds:BX寄存器指定内存单元地址 是 Intel cpu 规则
③ MOV AX,15[BP] 答:寄间相,30000H+0500H+0FH=3050FH
通过SS:[BP+IMM8]指定内存单元地址 是 Intel cpu 规则

④ MOV AX,SS:[SI] 答:寄间,30000H+0060H=30060H
SS段覆盖DS段
⑤ MOV AX,-2[BX][DI]
答:相对基变,10000H+0400H+0070H-2=1046EH
MOV AX,ds:[bx+di+d16]是Intel cpu 规则
⑥ MOV AX,ES:[BP][SI]
答:基变,20000H+0500H+0060H=20560H
ES代替SS行使段职能。

你的问题问的不对,寄存机 AX BX CX DX就是具体的数据,你可以把这些当成变量使用
a,b,c,d在程序中是分配的内存空间,和寄存器存在着本质上的区别,所以这些题目使用的数据就是:AX,BX,CX,DX这些寄存器数据

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 相当于 int a=1; a=a-a; 所以结果也是0
AND AX,0 AND指令,将后面两个数据按位‘与’操作,只要有一个数为0,结果就为0,所以AX的结果就是0了。

第三题看不懂什么意思,想问什么东西?

4、
内存复制的代码:
mov si,offset setscreen;原数据偏移地址
mov di,0 ;目标偏移地址
mov cx,offset setscreen_end-offset setscreen ;计算出数据长度
cld ;di,si每次执行movsb的时候都递增1
rep movsb ;开始复制

清零:
如果数据段有一块内存需要清零
mov cx,100; // 数据段长度
mov si,0; // 开始地址
mov al,0;
_start:
mov byte ptr ds:[si],al;
dec cx;
inc si; // 指向下一个字节
cmp cx,0;
jnz _start; // 如果cx不为0事继续清空下一个内存

百度【幽灵代码论坛】加入我们一起学习

假设用户输入的数字都是有效数字(0-F/A-D) ,X/Y不计小数,
则汇编如下:

Begin: mov ah,1
int 21
cmp al,1b ;ESC 退出
jnz KaiShi
mov ax,0e0d
int 10
mov al,0a
int 10
mov ah,4c
int 21
KaiShi: call YuChuLi
mov bl,al
mov ah,1
int 21
call YuChuLi
mov bh,al
mov ah,1
int 21
cmp al,41
jnz X1
call Jia ;+
jmp Output
X1: cmp al,42
jnz X2
call Jian ;-
jmp Output
X2: cmp al,43
jnz X3
call Chen ;*
jmp Output
X3: call Chu ;/
Output: call Disp
jmp Begin

YuChuLi:cmp al,39 ;预处理
jbe G2
cmp al,61
jb G1
sub al,20
G1: sub al,7
G2: sub al,30
ret

Jia: mov al,bl ;加法
xor ah,ah
add al,bh
ret
Jian: mov al,bl ;减法
xor ah,ah
cmp al,bh
ja ZC
xchg al,bh
ZC: sub al,bh
ret
Chen: mov al,bl ;乘法
xor ah,ah
mul bh
ret
Chu: Mov al,bl ;除法
cbw
div bh
ret
Disp: mov bx,ax ;显示部分
mov cx,4
QQ: push cx
mov dl,bh
mov cl,4
shr dl,cl
or dl,30
cmp dl,39
jbe Next
add dx,7
Next: mov ah,2
int 21
mov cl,4
rol bx,cl
pop cx
loop QQ
mov ax,0e48
int 10
ret

MOV DX,SEG STR1
MOV DS,DX

IN_X:
MOV DX,OFFSET STR1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
CALL IN_TEST
CMP AL,0FFH
JE IN_X
MOV BL,AL

IN_Y:
MOV DX,OFFSET STR2
MOV AH,9
INT 21H

MOV AH,1
INT 21H
CALL IN_TEST
CMP AL,0FFH
JE IN_Y
MOV BH,AL

SEL_MOOD:
MOV DX,OFFSET STR3
MOV AH,9
INT 21H

MOV AH,1
INT 21H

CMP AL,'A'
JE SER_A
CMP AL,'a'
JE SER_A
CMP AL,'B'
JE SER_B
CMP AL,'b'
JE SER_B
CMP AL,'C'
JE SER_C
CMP AL,'c'
JE SER_C
CMP AL,'D'
JE SER_D
CMP AL,'d'
JE SER_D
JMP SEL_MOOD

IN_TEST:
CMP AL,'0'
JL RE_IN
CMP AL,'9'
JA A2F_UP
SUB AL,30H
RET
A2F_UP:
CMP AL,'A'
JL RE_IN
CMP AL,'F'
JA A2F_LOW
SUB AL,37H
RET
A2F_LOW:
CMP AL,'a'
JL RE_IN
CMP AL,'f'
JA RE_IN
SUB AL,57H
RET
RE_IN:
MOV AL,0FFH
RET

DISP1:
MOV DL,AL
MOV AH,2
INT 21H
RET

SER_A:
MOV AL,BL
ADD AL,BH
JMP DISP16

SER_B:
CMP BL,BH
JL SUBHL
MOV AL,BL
SUB AL,BH
JMP DISP16
SUBHL:
MOV AL,BH
SUB AL,BL
JMP DISP16

SER_C:
MOV AL,BL
MUL BH
JMP DISP16

SER_D:
MOV AH,0
MOV AL,BL
DIV BH

DISP16:
CMP AL,16
JL DISPL
PUSH AL
MOV CL,4
SHR AL,CL
CMP AL,9
JA A2F_1
ADD AL,30H
CALL DISP1
POP AL
AND AL,0FH
JMP DISPL

A2F_1:
ADD AL,37H
POP AL
AND AL,0FH

DISPL:
CMP AL,9
JA A2F_2
ADD AL,30H
CALL DISP1

A2F_2:
ADD AL,37H
CALL DISP1

MOV AH,4CH
INT 21H

STR1 DB 'X=?',13,10,'$'
STR2 DB 'Y=?',13,10,'$'
STR3 DB 'Which Mode?(A,B,C or D)',13,10,'$'


建德市17869338968: 一道关于ARM汇编的简单题目,希望大神帮忙解答一下,谢谢! -
敖固安卜: 后面那个s表示做完加法后,影响标志位 但并不包含你说的R1>R2这个条件,需要加指令.

建德市17869338968: 简单的汇编题 谁能解答一下啊?? -
敖固安卜: 假设用户输入的数字都是有效数字(0-F/A-D) ,X/Y不计小数,则汇编如下:Begin: mov ah,1 int 21 cmp al,1b ;ESC 退出 jnz KaiShi mov ax,0e0d int 10 mov al,0a int 10 mov ah,4c int 21 KaiShi: call YuChuLi mov bl,al mov ah,1 int 21 call YuChuLi ...

建德市17869338968: 几道简单的汇编语言题求答案!我追加高的分数1.外部RAM1000H单元内容送寄存器R2中2.内部RAM20H单元内容送外部RAM 1000H单元3外部RAM20H单元... -
敖固安卜:[答案] 1.外部RAM1000H单元内容送寄存器R2中 MOV DPTR,#1000H MOVX A,@DPTR MOV R2,A 2.内部RAM20H单元内容送外部RAM 1000H单元 MOV A,20H MOV DPTR,#1000H MOVX @DPTR,A 3外部RAM20H单元内容送外部RAM1000H单元 MOV ...

建德市17869338968: 一道关于ARM汇编的简单题目,希望大神帮忙解答一下,谢谢!用一条指令完成有条件的无符号数加法运算,并更新CPSR中的条件码,条件是,如果R1>... -
敖固安卜:[答案] 后面那个s表示做完加法后,影响标志位 但并不包含你说的R1>R2这个条件,需要加指令.

建德市17869338968: 简单的汇编题目!(我是初学者,麻烦大家进来看看帮帮忙啊) -
敖固安卜: 1、指令MOV AX,CNT GT 20H中的CNT GT 20H是一个逻辑表达式,CNT是一个常量,前面已经赋值,CNT='A',大写字母'A'的ascii码是:41h,大于20h,所以这个表达式的值是'真'(汇编语言中,真=-1,假=0,许多高级语言也是这样规定的),-1的16位补码表示就是FFFFH. 2、MOV BX,LENGTH TAB BX=1 长度属性操作符(LENGTH)是针对内存变量的操作符,它返回重复操作符DUP中的重复数.如果有嵌套的DUP,则只返回最外层的重复数;如果没有操作符DUP,则返回1. 实际上,长度属性操作符(LENGTH)是返回数组元素的个数.

建德市17869338968: 帮忙解几个简单的汇编作业题? -
敖固安卜: 一楼对中断向量表的描述非常正确,各题答案回答如下: 1. 对应于1ch的中断向量存放在中断向量表的地址为中断类型号乘以4,即存放在内存从地址0000H:0070H开始的两个连续的字单元中. 2. 如果1ch的中断处理子程序从5110h:2030h开始,...

建德市17869338968: 简单汇编题,含答案,只需要解释一下为什么按字节写出以下变量的初值在内存中的存放顺序① A DB 7, - 5,?,0FBH, “ABCD”,2 DUP(2 DUP(“3”))答:7,0... -
敖固安卜:[答案] 按字节写出以下变量的初值在内存中的存放顺序 ① A DB 7,-5,?,0FBH, “ABCD”,2 DUP(2 DUP(“3”)) 答:7,0FBH,?,0FBH,41H,42H,43H,44H,3,3,3,3 字节数据顺序存放 ② B DW “12”,3 答:32H,31H,03H,00H 字数据低字节在前,高字节在后,...

建德市17869338968: 几个简单的汇编问题~~
敖固安卜: 1、 (1)寄存器间接寻址 lea bx,table add bx,8 mov dx,[bx] (2)寄存器相对寻址 lea bx,table mov dx,[bx+8] (3)基址变址寻址 lea bx,table mov si,8 mov dx,[bx][si] 2、 Z<--(W-X)/(5*Y)*2 mov ax,w sub ax,x mov bx,2 imul bx push dx push ax mov ax,5 mul y ...

建德市17869338968: 很简单的3道汇编题目 -
敖固安卜: 只写中间处理的部分 第一题:mov ah,1 int 21h ;上两条指令是从键盘接收一个字符,结果在dl中 mov bl,dl dec dl mov ah,2 int 21h ;输出它的前导字符 mov dl,bl mov ah,2 int 21h ;输出该字符 inc dl mov ah,2 int 21h ;输出它的后继字符 第二题:...

建德市17869338968: 汇编,简答题,求答案!高分回报! -
敖固安卜: 1、源程序用宏汇编程序翻译(汇编)后,可以得到三个文件:一个是扩展名为 .OBJ 的目标文件,在该文件中,将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址,因此需经 LINK 连接文件进行连接才能形...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网