问题1:根据提供的N,计算N的3次方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| assume cs:code
code segment cube: mov ax, bx mul bx mul bx ret start: mov bx, 2 ; 寄存器传参 call cube ; 寄存器存结果在dx, ax中 mov ax, 4c00h int 21h code ends end start
|
问题2:计算data段中第一组数据的3次方,结果保存在后面一组dword单元中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| assume cs:code, ds:data
data segment dw 1,2,3,4,5,6,7,8 ; 8个字,16个字节 dd 0,0,0,0,0,0,0,0 ; 8个双字,32个字节 data ends cube: mov ax, bx mul bx mul bx ret start: mov ax, data mov ds, ax mov si, 0 ; 存储偏移地址的变量 mov di, 16 ; 存储偏移地址的变量 mov cx, 8 s: mov bx, [si] ; 寄存器传参 call cube ; 寄存器存结果,在dx、ax中 mov [di], ax mov [di].2, dx add si, 2 add di, 4 loop s mov ax, 4c00h int 21h code segment
|
问题3:将data段中的字符串转化为大写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| assume cs:code, ds:data
data segment db "conversation",0 data ends
code segment start: mov ax, data mov ds, ax mov si, 0 ; 寄存器传参 call capital ; 不需要结果 void mov ax, 4c00h int 21h capital: mov cl, [si] mov ch, 0 jcxz ok and byte ptr [si], 11011111b inc si jmp short capital ok:ret code ends end start
|
问题4:计算(a - b)^3^,a、b为word型数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| assume cs:code
code segment start: mov ax, 1 push ax ; 栈传参 mov ax, 3 push ax ; 栈传参 call difcube ; 寄存器存结果,在dx、ax中 mov ax, 4c00h int 21h difcube: push bp ; 保存现场 mov bp, sp mov ax, [bp+4] sub ax, [bp+6] mov bp, ax mul bp mul bp pop bp ; 还原现场 ret 4 ; 1.pop ip 2.add sp, 4
|