编写一个32为加法程序,将已经定义好的双字变量X、Y相加之和存放到变量Z中(不考虑溢出)。
.model small,c
.stack 200
.data
x dd 22223333H
y dd 44445555H
z dd ?
;Z最终值为66668888H
.code
.startup
mov ax,word ptr x
;ptr用来指示操作数的大小和类型,word ptr表示汇编器在处理x的时候要以字(16位)为单位来处理
add ax,word ptr y
mov word ptr z,ax
mov ax,word ptr x+2
;word ptr x+2,就是以字单位向后移动一个单位,也就是x的第二个16位的数据(3333H)
add ax,word ptr y+2
mov word ptr z+2,ax
.exit
End
编写程序,将已定义的双字变量X循环左移一位
.model small,c
.stack 200
.data
x dd 6A6A6A6AH
;Z最终值为66668888H
.code
.startup
;先对低位进行循环左移
shl word ptr x,1
rcl word ptr x+2,1
adc word ptr x,0
mov ax,word ptr x
mov bx,word ptr x+2
;最终结果x等于D4D4D4D4
.exit
End
编写程序,从键盘输入两个十进制数字,转换成十六进制数存放到字节变量X(不考虑输入错误)。
.DATA
x db ?
.CODE
.STARTUP
mov ah,1
int 21h
sub al,'0'
mov ah,0
mov bl,10
mul bl
mov bl,al
mov ah,1
int 21h
sub al,'0'
add bl,al
mov x,bl
.EXIT
END
编写程序,将已定义压缩BCD码X,转换成两位十进制字符输出到屏幕。
.model small,c
.stack 200
.data
x db 56h
.code
.startup
mov cl,4h
mov dl,x
shr dl,cl;将dl逻辑右移4位(除以16),获取高四位的十进制数
add dl,'0';转换成为字符才能输出,不然乱码
mov ah,2h
int 21h
mov dl,x
and dl,0fh ;将dl进行与操作,保留低四位的十进制数,0fh就是15,我们只需要0~9的十进制数,所以对15取余
add dl,'0'
mov ah,2h
int 21h
;最后分别输出了5和6
.exit
end(5)编写程序,输入一个十进制数(不考虑错误输入),要求用查表指令计算其平方并输出,等待任意按键后退出。
.data
Tab db 0,1,4,9,16,25,36,49,64,81
n db 5
m db ?
.code
.startup
mov al,n
mov bx,offset tab
xlat
mov m,al
.exit
end