下面的是我们的汇编题目,麻烦帮忙给一下做法。
1个回答

八、填空题。

1.假设(SS)=3000H,(SP)=1008H;如果在堆栈中存入3个数据,则栈顶的物理地址为_31002_H; 如果又从堆栈中取出5个数据, 则栈顶的物理地址为_3100C_H;再从堆栈中取出4个数据,则栈顶的物理地址为_31014_H;如果又在堆栈中存入6个数据,则栈顶的物理地址为_31008_H。

2.字符“0” 加5后的字符是_“5”_;字符“a” 减20H后的字符是_“A”_。

答案:第1空:"5",第2空:"A" 。

做法:1,出入栈每个数据以字(2bytes)为单位,入栈向低地址伸展,即入栈sp-n*2,出栈为sp+n*2,物理地址SS*10H+SP

2,常识小写字母ASCII码值比大写字母大20H,数字的ASCII码值低四位为数字,高四位相同

九、根据下列各题的要求,编制程序。

1.用移位、传送和加法指令完成(AH)*9的计算。(设积不会溢出)

小学算法:a*9=a*8+a:移位可实现2,4,8倍或1/2,1/4,1/8

mov al,ah-->mov cl,4 -->shl ah,cl--->add ah,al

2.设I、J、K为无(有)符号字节(字)变量,将J、K中大(小)的存入I中。

mov ax,J-->mov bx,K-->cmp ax,bx

ja axGreater 无符号数比较,ax大直跳

mov ax,bx 否则,将较大的bx移入ax,保证ax始终最大

axGreater:

mov I,ax

>>>>>>>>>

mov ax,J-->mov bx,K-->cmp ax,bx

jl axLower 有符号数比较,ax小直跳

mov ax,bx 否则,将较小的bx移入ax,保证ax始终最小

axLower:

mov I,ax

3.设X、Y、Z均为有符号的字变量,计算(678+X*9)/234, 并将商存入Y中、余数存入Z中。

mov ax,X-->mov bx,9-->mul bx-->add ax,678-->adc dx,0-->mov bx,234-->div bx

mov Y,ax-->mov Z,dx

5.数据段D中有 M DB ‘HOW DO YOU DO?’,0DH,0AH,‘$’ ,显示此字符串。

mov dx,offset M

mov ah,9

int 21h

6.将键盘输入的大(小)写字母用小(大)写字母显示出来,若输入的不是大(小)写字母,则返回。

不带回显键盘输入功能号-->ah

main proc

start:

int 21h

cmp al,41h

jb exit ;z

cmp al,5Ah

jna uppercase

cmp al,61h

jnb lowercase

exit:

ret

uppercase:

add al,20h

jmp showch

lowercase:

sub al,20h

showch:

mov dl,al

ret

main endp

end start

8.将DL中的低四位二进制数以十六进制数形式显示出来。

mov cl,4-->shl dl,cl-->shr dl,cl

cmp dl,10h

jnb decimalnum

sub dl,10h

add dl,'A'

jmp showit

decimalnum:

add dl,30h

showit:

显示字符功能号-->ah

int 21h

B.测试8EH中0的位数。

mov al,8Eh

mov cx,8

xor bl,bl

bittest:

shl al,1

jc continue

inc bl

continue:

loop bittest

0的位数在bl中

C.测试8EH中1的位数。

mov al,8Eh

mov cx,8

xor bl,bl

bittest:

shl al,1

jnc continue

inc bl

continue:

loop bittest

1的位数在bl中

D.计算305*3,程序段执行后,DX=________ ,AX=________ 。

305>256,在ax中,mul后为dx:ax,明显不超过ax表示范围,即dx=0,ax=915

E.计算41*3,程序段执行后,AX=_123D_ 。

F.计算0F2/3,程序段执行后,AX=________ 。

ax=f2,bl=3,mul bl==>al=商,ah=余

需分有符号数与无符号数除法分析

G.计算62/3,程序段执行后,AH=________ ,AL=________ 。

同上

H.统计正(负/奇/偶)数的个数。

n位Reg或Men表示个数为:

正:有符号--》2^(n-1)-1;无符号2^n

负: 2^(n-1)

奇数、偶数:2^(n-1)