汇编语言带符号加法的编程

发布网友 发布时间:2022-04-24 08:43

我来回答

3个回答

热心网友 时间:2022-06-18 03:08

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; prog name:calculating with signed byte ;;
;; date: 08.10.27 ;;
;; author: ivshe ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.model small
.data
;signed byte ranging from -128 to +127 (including results!!)
datax db -2 ;(e4H)
datay db ;(0cH)
errmsg db 0dh,0ah,'Wrong input.Exit.','$'
ofmsg db 0dh,0ah,'Overflow.Exit.','$'

hextable db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,41h,42h,43h,44h,45h,46h
.code
.startup

;input the operator in AL
;+=2bH,-=2dH,*=2aH,/=2fH
mov ah,1h
int 21h

;judge which operation is selected
cmp al,2bh
je _add
cmp al,2dh
je _sub
cmp al,2ah
je _mul
cmp al,2fh
je _div

mov ah,9h
mov dx,offset errmsg ;wrong input
int 21h

jmp exit

_add:
mov ax,0h
mov bx,0h
mov al,datax
mov bl,datay
add al,bl
jo _overflow

call disp

jmp exit
_sub:
mov ax,0h
mov bx,0h
mov al,datax
mov bl,datay
sub al,bl
jo _overflow

call disp
jmp exit

_mul:
mov ax,0h
mov bx,0h
mov al,datax
mov bl,datay
imul bl

;jo _overflow

call disp
jmp exit

_div:
mov ax,0ff00h ;此处有符号扩展
mov bx,0h
mov al,datax
mov bl,datay
idiv bl

call disp
jmp exit

_overflow:
mov dx,offset ofmsg
mov ah,9h
int 21h

jmp exit

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
disp proc
;; procere name:disp
;; function: display a byte in the form of hex
;; input: al=byte data
;; output: n/a

push cx
push bx
mov bx,offset hextable
push ax

mov ah,2h
mov dl,2ch
int 21h ;输出逗号

pop ax
mov ah,0h
mov cl,al
shl ax,4
mov al,cl
and al,0fh ;将AL的高四位放到AH的第四位,如AL=1101 0010,转换后
;AH=0000 1101 , AL=0000 0010
xlat ;将al中转换成对应16进制的ascii
mov cl,al
mov al,ah
xlat ;将ah中转换成对应16进制的ascii
mov ch,al ;此时CX中存储着两位十六进制的ASCII

mov dl,ch
mov ah,2h
int 21h

mov dl,cl
mov ah,2h
int 21h

pop bx
pop cx
ret
disp endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

exit:
mov ax,4c00h
int 21h
end

参考资料:http://ivshe.blogbus.com/logs/30687985.html

热心网友 时间:2022-06-18 03:09

因为加法 无符号和带符号是一样的,所以就是add,而 无和有 乘法除法结果不同,所以有专门的。。

热心网友 时间:2022-06-18 03:09

看看补码吧,哥们

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com